Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Some detailed information on how to solve this would be super helpfull, thanks.

ID: 3879632 • Letter: S

Question

Some detailed information on how to solve this would be super helpfull, thanks.

I'm writing an ssembly code in mips archetecture that corresponds to the pseudo code below. Assume that the address for integer i is baseaddress+4 and the address for a[0] is baseaddress+8. Assume that the baseaddress is stored in $gp. The code initializes i to 0; it then iterates from i=0 to i=9, setting a[i] = 4i in each iteration. To make your code efficient, it must be loaded into a register at the start, and it must be updated in memory only after you've finished the for loop.
for (i=0; i<10; i++)
a[i] = 4*i;

Explanation / Answer

Code(Explanation in comments):

la $t0, ($gp) #load base address to $t0

addiu $t0, $t0, 4 #go to base address + 4 (i)

li $t1, 0 #initialise i to 0 and store in its location

sw $t1, ($t0)

loop: #enter for loop

addiu $t0, $t0, 4 #increment $t0 by 4 #initialially it is a[0], keeps incrementing by i

mul $t2, $t1, 4 #i*4

sw $t2, ($t0) #store in a[i]

addi $t1, $t1, 1 #increment i

blt $t1, 10, loop #loop till < 10

la $t0, ($gp) #load base address + 4

addiu $t0, $t0, 4

sw $t1, ($t0) #store i value

Hope this helps. Do Upvote! :)

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote