0

嘿有一个关于分支指令的问题。

如果不等于位于 0x00002000 (PC) 的指令和以下指令,我有一个分支:

RS(寄存器 4)= 0 RT(寄存器 3)= 7

因此分支不等于,然后应遵循以下等式:

if (rs!=rt) goto (PC+offset)

PC 为 0x00002000,偏移量为 0000000000001000

我所做的是将偏移量转换为 32 位,左侧只有一个额外的 16 个 0,但我不知道如何添加这两个,并且讲座幻灯片不是特别清楚或给出如何执行此操作的示例。 ..所以我只是想知道如何才能获得新PC?

非常感谢任何帮助,谢谢!

4

1 回答 1

0

新的 PC 将是您的分支指令之后的指令地址,加上偏移量。

所以在这种情况下,如果分支指令是 4 个字节,偏移量是 0x1000,那么分支指令执行后新的 PC 将是 0x3004。

这是关于 PC 相对寻址的维基百科条目http://en.wikipedia.org/wiki/Addressing_mode#PC-relative

于 2012-05-25T04:08:31.007 回答