有人可以解释以下 MIP 代码吗?

Can someone explain the following MIPs code?

f,g,h,i,j == $s0-$s4。 数组A和B的基址分别是$s6和$s7

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

据我了解,第一行采用 f*4 的值并将其存储在 $t0 中。我被告知我们有第一行,因为该数组包含 4 字节的值。请解释其余部分。我知道程序正在某处访问数组,但我不明白语法,它看起来就像数组 A 的基本情况被添加到 f*4 中。谢谢。

sll 是逻辑左移——因此 sll $t0, $s0, 2$s0 (f) 中的值,并将其左移 2 位,结果为$t0。这与乘以 4 相同,但速度更快。

add是加法——所以add $t0, $s6, $t0$s6中的值(A的基地址),加上上面刚刚计算的$t0值,将结果粘贴到 $t0 中(替换旧值)。这为您提供了 A[f]

的地址

lw 是加载字——因此 lw $s0, 0($t0) 在距 $t0 0 字节偏移处加载 4 字节值并将其粘贴到 $s0 中。鉴于前两条指令,这是 A[f]

的值

另外两条指令正在计算$t1

中B[g]的地址