更新时间:2022-10-12 13:41:17
本节书摘来自异步社区《逆向工程权威指南》一书中的第2章2.2节ARM,作者【乌克兰】Dennis Yurichev(丹尼斯),更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.2 ARM
ARM模式是什么情况?
指令清单2.3 Optimizing Keil 6/2013 (ARM模式)
f PROC
MOV r0,#0x7b ; 123
BX lr
ENDP
ARM程序使用R0寄存器传递函数返回值,所以指令把数值123赋值给R0。
ARM程序使用LR寄存器(Link Register)存储函数结束之后的返回地址(RA/ Return Address)。x86程序使用“栈”结构存储上述返回地址。可见,BX LR指令的作用是跳转到返回地址,即返回到调用者函数,然后继续执行调用体caller的后续指令。
如您所见,x86和ARM指令集的MOV指令确实和对应单词“move”没有什么瓜葛。它的作用是复制(copy),而非移动(move)。