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

时间:2018-09-18 00:28:21

标签: arrays mips sll

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

1 个答案:

答案 0 :(得分:1)

sll是逻辑左移的,因此sll $t0, $s0, 2$s0(f)中的值,并将其左移2位,结果为{{ 1}}。等于乘以4,但是速度要快得多。

$t0是加法运算-因此addadd $t0, $s6, $t0(A的基地址)中的值,并加上刚刚计算出的$s6值,结果为$t0(替换旧值)。这给你地址A [f]

$t0是装入字-因此lw以距lw $s0, 0($t0) 0字节偏移的4字节值装入,并将其粘贴在$t0中。给定前两个指令,这是A [f]

的值

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