Write the MIPS assembly code that corresponds to the pseudo code below. Assume t
ID: 3783615 • Letter: W
Question
Write the MIPS assembly code 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=4, setting a[i] = 2i in each iteration. To make your code efficient, i 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<5; i++)
a[i] = 2*i;
Explanation / Answer
main:
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 0
.L3:
cmp DWORD PTR [rbp-4], 4
jg .L2
mov eax, DWORD PTR [rbp-4]
lea edx, [rax+rax]
mov eax, DWORD PTR [rbp-4]
cdqe
mov DWORD PTR [rbp-32+rax*4], edx
add DWORD PTR [rbp-4], 1
jmp .L3
.L2:
mov eax, 0
pop rbp
ret
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.