MIPS分支机构。如何向后跳?

时间:2011-07-06 00:59:14

标签: mips

我一直在寻找答案,最后我决定询问并看看这里是否有人可以帮助我;)

MIPS中条件跳转指令的格式,比如beq指令,包含一个16位字段,表示跳转的“大小”。我知道必须将它添加到当前的PC才能获得所需的方向。我的疑问是,如何设置场向后跳?我猜两个补码?我找到了这个例子,但它比我更困惑...如果有人能简单解释一下我会非常感激!顺便说一下,抱歉我的语法/表达方式,我还不太擅长英语。

提到的例子:

PC+Jump(Forward)

0100 1101 0000 0011 1010 1100 0101 1000

0000 0000 0000 0000 0000 0000 1001 1100

.......................................................................

0100 1101 0000 0011 1010 1100 1111 0100


PC+Jump(Backwards)

0100 1101 0000 0011 1010 1100 0101 1000

1111 1111 1111 1111 1100 0000 1001 1100

.......................................................................

0100 1101 0000 0011 0110 1100 1111 0100

1 个答案:

答案 0 :(得分:2)

偏移是有符号值,因此向后跳转只使用负偏移量。

您展示的示例演示了简单的添加。在分支和跳转的上下文中,顶部数字表示当前PC,第二个数字表示偏移量,底部数字表示新PC。回想一下,在二进制补码中,减法与添加负数相同。请注意,在后面的示例中,偏移量为负。当偏移量在MIPS指令中编码时,它会被符号扩展为完整的32位。