首页
社区
课程
招聘
[求助]arm指令BL指令对应的机器码问题????
发表于: 2014-10-23 15:28 11028

[求助]arm指令BL指令对应的机器码问题????

2014-10-23 15:28
11028
在论坛里面找到大神说的方法
(目的地址-源地址)/4-2
按照这个办法,为什么下面的不行呢,下面是我ida中的
_text:000E8070 1F F0 F4 FD                 BL              sub_107C5C

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 138
活跃值: (475)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
(目的地址-源地址 -8)/4
2014-10-23 16:24
0
雪    币: 188
活跃值: (167)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
SrcAddr + (x << 2 + 8) = DstAddr

x = ((DstAddr - SrcAddr) - 8) >> 2
2014-10-23 17:43
0
雪    币: 8
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你好啊,安装你的这个方法(107C5C-E8070-8)/4=0x7EFB 怎么不一样啊
2014-10-23 17:56
0
雪    币: 335
活跃值: (263)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看一下我以前实验:
计算B/BL偏移
目标地址-(当前地址+8) >>2

.text:00637C80 E5 34 42 EB       BL      __mulsf3
.text:016C501C                   EXPORT __mulsf3

016C501C-(00637C80+8) >>2
00637C80+8=637C88
016C501C-637C88=108D394
108D394 >>2 = 0x4234E5
高低对换:
E5 34 42 -->对换之后偏移
EB ->BL
2014-10-24 15:34
0
雪    币: 335
活跃值: (263)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
关于ARM的B,BL跳转指令:
假设跳转指令处的地址是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
2014-10-24 15:36
0
雪    币: 41
活跃值: (823)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
遇到同样的问题,看看
2016-8-17 09:05
0
游客
登录 | 注册 方可回帖
返回
//