Can someone explain the following MIPs code?

171 views Asked by At

f,g,h,i,j == $s0-$s4. Base address of arrays A and B are $s6 and $s7

sll $t0, $s0, 2
add $t0, $s6, $t0
sll $t1, $s1, 2
add $t1, $s7, $t1
lw $s0, 0($t0)

as far as i understand, the first line takes the value of f*4 and stores it in $t0. ive been told that we have the first line because the array is holding 4-byte values. Please explain the rest. I know the program is accessing the array somewhere but i dont understand the syntax, it just looks like the base case of array A is being added to the f*4. thanks.

1

There are 1 answers

0
Chris Dodd On BEST ANSWER

sll is shift-left-logical -- so sll $t0, $s0, 2 takes the value in $s0 (f), and shifts it left by 2 bit places, sticking the result is $t0. That's the same as multiplying by 4, but much faster.

add is addition -- so add $t0, $s6, $t0 takes the value in $s6 (the base address of A), and adds the $t0 value just computed above, sticking the result in $t0 (replacing the old value). This gives you the address of A[f]

lw is load word -- so lw $s0, 0($t0) loads the 4-byte value at a 0 byte offset from $t0 and sticks it in $s0. Given the previous two instructions, this is the value of A[f]

The other two instructions are computing the address of B[g] in $t1