MIPS32汇编beq指令说明

时间:2016-07-20 05:50:34

标签: assembly mips mips32

有人可以解释为什么以下装配线有意义吗?

beq $0, $0, 1

请注意,$ 0表示始终具有值0的寄存器。 所以我们说如果$ 0 = $ 0则转到PC + 4 + 1,否则转到下一条指令。

我的困惑来自于beq指令的直接字段,即1。 这是否意味着我们要解决PC + 5 ???访问内存时MIPS是否需要对齐,并且所有内存位置都必须被4整除?

请注意,本书说这条指令只是跳过下一条指令。

1 个答案:

答案 0 :(得分:3)

beq $t, $s, offset的语义是

if ($t == $s) 
    PC = PC + 4 + 4 * offset;
else 
    PC = PC + 4

简单地说,在执行指令时,PC总是先加4,并且假设立即错过了低两位,因为它们始终为零并且可以通过移位重新引入(offset * 4 = {{ 1}})。

offset << 2只是跳过下一条指令,因为它在实际上设置了beq $0, $0, 1