有人可以解释为什么以下装配线有意义吗?
beq $0, $0, 1
请注意,$ 0表示始终具有值0的寄存器。 所以我们说如果$ 0 = $ 0则转到PC + 4 + 1,否则转到下一条指令。
我的困惑来自于beq指令的直接字段,即1。 这是否意味着我们要解决PC + 5 ???访问内存时MIPS是否需要对齐,并且所有内存位置都必须被4整除?
请注意,本书说这条指令只是跳过下一条指令。
答案 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
。