0

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 中。谢谢。

4

1 回答 1

1

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)在 0 字节偏移处加载 4 字节值$t0并将其粘贴到$s0. 给定前两条指令,这是 A[f] 的值

另外两条指令正在计算 B[g] 的地址$t1

于 2018-09-18T00:58:55.040 回答