我的教科书中给出了以下汇编代码。
Loop:
sll $t1, $t0, 2
add $t2, $a0, $t1
sw $zero, 0($t2)
addi $t0, $t0, 1
slt $t3, $t0, $a1
bne $t3, $zero, Loop
# return where we were
jr $ra
从这段代码中,我有两个问题要问。
第一个问题是关于从顶部开始的第二行。我知道该指令sll
是向左移位的逻辑左移。由于移位量为 2,因此十进制0000 -> 0100 = 4。但是在第一个循环之后我没有得到它。如果我们把它向左移动 2,它乘以 4 不就多了吗?
第二个问题是是否可以优化这段代码?在我看来,我可以sll
在代码中修改和添加部分,但我不确定。任何意见??