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
。
有人可以解释为什么下面的流水线有意义吗?
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
。