The following problems deal with translating from MIPS to C. Assume that the var
ID: 3541778 • Letter: T
Question
The following problems deal with translating from MIPS to C. Assume that the variables f,g,h,i and j are assigned to registers $s0,$s1,$s2,$s3, and $s4 respectively. Assume that the base address of the arrays A and B are in registers $s6 and $s7 respectively.
a.
sll $s2 $s4 1
add $s0 $s4 $s3
add $s0 $s0 $s1
b.
sll $to, $s0, 2 # $t0 = f*4
add $t0, $s6, $t0 # $t0 = &A[f]
sll $t1, $s1, 2 # $t1= g*4
add $t1, $s7, $t1 # $t1 = &B[g]
lw $s0, 0($t0) # f = A[f]
addi $t2, $t0, 4
lw $t0, 0($t2)
add $t0, $t0, $s0
sw $t0, 0($t1)
1. For the MIPS assembly instructions in a and b above, what are the corresponding C statements?
2. For the MIPS assembly instructions in a and b above, rewrite the assembly code to minimize the number of MIPS instructions (if possible) needed to carry out the same function.
Explanation / Answer
please rate - thanks
a.
sll $s2 $s4 1 h=j*2
add $s0 $s4 $s3 f=j+i
add $s0 $s0 $s1 f+=g
b.
sll $to, $s0, 2 # $t0 = f*4
add $t0, $s6,$t0 # $t0 = &A[f]
sll $t1, $s1, 2 # $t1= g*4
add $t1, $s7, $t1 # $t1 = &B[g]
lw $s0, 0($t0) # f = A[f]
addi $t2, $t0, 4 # t2=t0+4
lw $t0, 0($t2) # t0=*t2
add $t0, $t0, $s0 # t0+=A[f]
sw $t0, 0($t1) # B[g]=t0
b[g]=a[f]+a[f+1]
rewritten
I don't see a better way
need to get the addresses, load them, to the addition, and then store, which is all this is doing
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.