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中。谢谢。
答案 0 :(得分:1)
sll
是逻辑左移的,因此sll $t0, $s0, 2
取$s0
(f)中的值,并将其左移2位,结果为{{ 1}}。等于乘以4,但是速度要快得多。
$t0
是加法运算-因此add
取add $t0, $s6, $t0
(A的基地址)中的值,并加上刚刚计算出的$s6
值,结果为$t0
(替换旧值)。这给你地址A [f]
$t0
是装入字-因此lw
以距lw $s0, 0($t0)
0字节偏移的4字节值装入,并将其粘贴在$t0
中。给定前两个指令,这是A [f]
另外两条指令正在计算$s0
中的B [g]的地址