首页
社区
课程
招聘
[原创]ARM 跳转指令机器码获取方法
发表于: 2013-10-13 19:07 13950

[原创]ARM 跳转指令机器码获取方法

2013-10-13 19:07
13950
如有指令
0001B3A8:1AFFFFF8  BL loc_1B390

0001B4E0:0A000074  BL loc_1B6B8

前一句指令跳转的目标是向上,后一句指令跳转的目标是向下,那么指令码是如何得来的呢?

如果是向上跳转,那么操作码为1A ,如果是向下跳转,操作码为0A

目标地址是如何确定呢?

给出一个公式:
if(current_address>dest_address)
  !((current_address-dest_address)/4+1)
else
  (dest_address-current_address)/4-2

如第一句指令中当前地址为0001B3A8 ,目标地址为1B390 ,因为目标地址<当前地址,所以用1B3A8-1B390的差去除以4,然后+1 ,再取反,即!((1B3A8-1B390)/4+1)=FFFFF8

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
...................我数学老师死了,,  死的惨呀。。。
2013-10-13 19:46
0
雪    币: 1040
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
是我没看懂么? 怎么算过来的?(1B3A8-1B390)/4+1 = 1B3A7  ?????

你数学老师还健在么?
2013-10-13 20:04
0
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
数学老师教完我后,就死了。。。。。 。。  你那句话,弄的我脸好红。。    ......
2013-10-13 20:32
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
5
http://bbs.pediy.com/showthread.php?t=178362

这个不知道对你有没有帮助?
2013-10-13 20:45
0
雪    币: 8
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不行啊,下面这个按照你的计算方法怎么不对啊
_text:000E8070 1F F0 F4 FD                 BL              sub_107C5C
2014-10-23 15:04
0
游客
登录 | 注册 方可回帖
返回
//