首页
社区
课程
招聘
[求助]如何计算出bl中的偏移值?
发表于: 2013-1-25 15:48 6666

[求助]如何计算出bl中的偏移值?

2013-1-25 15:48
6666
计算jump偏移
mstwugui:
(目标地址-(当前地址+4)&0xFFFFFFFD) >>2
这个公式在这里不行了

.text:00637C80 E5 34 42 EB       BL      __mulsf3
.text:00637CA4 DC 34 42 EB       BL      __mulsf3
.text:016C501C                   EXPORT __mulsf3
.text:016C501C FF C0 A0 E3       MOV     R12, #0xFF

E5
DC
这个应该是偏移值,就是不知道如何计算出来?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 335
活跃值: (313)
能力值: ( 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的值刚好为目标处的地址值,即目标地址指令进入取指,流水线前两级被清空
http://www.decell.org/article.asp?id=2
2013-1-25 16:14
0
雪    币: 761
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢楼上解答BL偏移的知识,学习了。
2013-1-28 09:19
0
雪    币: 114
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
又学习了 感谢
2013-2-20 21:56
0
游客
登录 | 注册 方可回帖
返回
//