-
-
[原创]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
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!