嘿有一个关于分支指令的问题。
我有一个分支,如果不等于位于0x00002000(PC)的指令和以下内容:
RS(寄存器4)= 0 RT(寄存器3)= 7
因此分支不相等,应遵循以下等式:
if(rs!= rt)goto(PC + offset)
PC是0x00002000 偏移量为0000000000001000
我所做的是将偏移量转换为32位,左边只有一个额外的16 0,但我不知道如何添加两个,演讲幻灯片不是特别清楚,或举例说明如何这样做...所以我只是想知道如何才能做到这一点来获得新PC?
非常感谢任何帮助,谢谢!
丹
答案 0 :(得分:0)
新PC将是分支指令后的指令地址加上偏移量。
所以在这种情况下,如果分支指令是4个字节,偏移量是0x1000,那么分支指令执行后新PC将为0x3004。
以下是关于PC相对地址http://en.wikipedia.org/wiki/Addressing_mode#PC-relative
的维基百科条目