能力值:
( LV2,RANK:10 )
|
-
-
2 楼
靠又是一次自问自答:
假设跳转指令处的地址是A,跳转目标处的地址是B.
B,BL指令保存的是偏移地址,这个地址的计算方法是:
1.B-(A+8).A+8是因为ARM的流水线使得指令执行到A处时,PC实际的值是A+8.
2.第一步得到的值是4的倍数,因为ARM的指令是4对齐的,即最低两位为00.于是将这个值右移两位.
3.得到最终偏移
执行时:
1.取出偏移
2.左移两位
3.加入PC,这时PC的值刚好为目标处的地址值,即目标地址指令进入取指,流水线前两级被清空
685K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3c8W2j5$3g2D9L8q4)9J5k6h3!0J5k6#2)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3X3g2S2M7%4m8Q4x3@1k6A6k6q4)9K6c8o6t1`.
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
感谢楼上解答BL偏移的知识,学习了。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
又学习了 感谢
|
|
|