首页 > 编程知识 正文

格雷码转二进制计算器,beq 机器码

时间:2023-05-03 18:43:11 阅读:106325 作者:3332

转到:http://BBS.pediy.com/showthread.PHP吗? p=1383668posted=1#post1383668

向后跳

001200F001F8bl.Lhelo

. Lhelo:

001805F0D1F7pld[r1,r5]

计算方法:

取上位f000,取下位11位=000

低位f801,低位11比特=001

计算:“00012”| (0011 )=2

该最高位符号位为0 .意味着向后方跳跃,所以保持该值2即可

然后计算出的目标地址是0x0012 4 2=0x0018

跳跃

00001164FFF7BEFFBL_Z4testv

_Z4testv

000010E407B5PUSH{R0-R2,LR}

计算方法:

取上位f7ff,取下位11位=7ff

取低位ffbe,取低位11比特=7be

计算: (7ff12 )|)|(7be1)=7fff7c

由于该最高有效位符号位为1意味着向前跳转,因此需要-1,相反的值为ff800084。 拿84就行了

然后,计算出的目标地址是0x1164 4-0x84=0x10e4

逆向过程:

标签

用BL指令得到的机器码算法:

offset=dstAddr-srcAddr;

offset=(offset-4 )0x007fffff;

high=offset12;

low=(offset0x00000fff ) 1;

machinecode=(0xff00|low ) 16 )|)|(0xF000|high );

BLXlabel

与BL相似,但计算机器码的算法略有不同

offset=dstAddr-srcAddr;

offset=(offset-4 )0x007fffff;

high=offset12;

low=(offset0x00000fff ) 1;

if(low%2!=0}{

行;

}

machinecode=(0xef00|low ) 16 )|)|(0xF000|high );

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。