Just started learning assembly for one of my classes and I am a bit confused over this code segment. This is from a textbook question which asks you to translate from MIPS instructions to C. The rest of the question is in the attached image.
For the MIPS assembly instructions above, what is the corresponding C statement? 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.
sll $t0, $s0, 2 # $t0 = f * 4
add $t0, $s6, $t0 # $t0 = &A[f]
sll $t1, $s1, 2 # $t1 = g * 4
add $t0, $s6, $t0 # $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)
I have a basic understanding of some MIPS instructions but frankly, the stuff with arrays confuses me a bit. Could anyone here point me in the right direction? Thanks!
A, it is hard to tell.. Looks like it is 4 bytes wide, if there is no mistake in the question - Eugene Sh.addicommand adds4tot0storing the result intot2. nextlw, i guess standing for "load word", it is loading t0 with a value from memory location pointed byt2, which isA[f+1](since we have incrementedf*4by another4. sot2=A[f+1].swis an opposite oflw, and it is transferring the value from the register to memory. From here continue by yourself. - Eugene Sh.