分支如果不等于PC地址

时间:2012-05-16 15:25:58

标签: architecture branch cpu-architecture program-counter

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

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

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

因此分支不相等,应遵循以下等式:

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

PC是0x00002000 偏移量为0000000000001000

我所做的是将偏移量转换为32位,左边只有一个额外的16 0,但我不知道如何添加两个,演讲幻灯片不是特别清楚,或举例说明如何这样做...所以我只是想知道如何才能做到这一点来获得新PC?

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

1 个答案:

答案 0 :(得分:0)

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

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

以下是关于PC相对地址http://en.wikipedia.org/wiki/Addressing_mode#PC-relative

的维基百科条目