首页
社区
课程
招聘
[求助]ARM 中mvb R0, #2如何转换为十六进制的指令码的?
发表于: 2013-6-17 22:08 7051

[求助]ARM 中mvb R0, #2如何转换为十六进制的指令码的?

2013-6-17 22:08
7051
看到一篇文章中将
MOVS R0, #2
POP {R3, PC}

汇编代码变成了char insertcode[] = "\x02\x20\x08\xBD";这句话,不知道是如何计算过来的?

文章地址:d16K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3S2A6i4K6u0W2j5X3q4A6k6s2g2Q4x3X3g2U0L8$3#2Q4x3V1k6Z5j5i4u0J5P5g2)9#2k6X3I4A6L8h3g2Q4x3V1k6A6N6r3g2E0i4K6u0r3x3o6p5H3z5e0p5%4x3$3c8S2z5r3x3K6z5e0l9&6k6o6j5K6x3$3q4X3k6X3p5#2

谢谢!

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
哦,搞定了。
首先得明确知道这段汇编代码是Thumb状态的16位汇编指令,android下的存储格式是小端格式。
所以根据这段c代码"\x02\x20\x08\xBD”知道这段汇编代码实际的指令码是:
MOVS RO, #2       --->  0x20 0x02
POP {R3, PC}      --->   0xBD 0x08

验证下:
查看资料MOV指令的编码格式


pop指令的编码格式


注:下面推测的,书上还没找到答案
MOVS 指令里面的S表示影响CPSR寄存器,不知道为什么这个S不需要写进指令码里面。
MOV指令编码格式中的Rd只有三位,刚好可以表示R0-R7八个寄存器。
POP指令编码格式中的register_list八位,每一位表示一个寄存器,例如有R3寄存器时,第三位则为1。
上传的附件:
2013-6-18 14:59
0
游客
登录 | 注册 方可回帖
返回