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! :)
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.