MIPS32汇编beq指令解释

MIPS32 assembly beq instruction explanation

有人可以解释为什么下面的流水线有意义吗?

beq [=10=], [=10=], 1

请注意,$0 指的是一个值始终为 0 的寄存器。 所以我们说如果 $0 = $0 然后转到 PC + 4 + 1 否则转到下一条指令。

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

注意书上说这条指令只是跳过下一条指令。

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

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

简单地说,在执行指令时 PC 总是提前 4,并且假定立即数缺少低两位,因为它们始终为零并且可以通过移位重新引入(offset * 4 = offset << 2).


beq [=14=], [=14=], 1 只需跳过下一条指令,因为它重复设置 PC = PC + 8