3.3-常用汇编指令
如何阅读反汇编文件? 以下是一个例子 4bc: e3a0244e mov r2, #1308622848 4c0: e3a0344e mov r3, #1308622848 4c4: e5933000 ldr r3, [r3] 像4bc这些是代码运行的地址, e3a0244e是机器码 那常用的汇编指令有哪些? b, bl 这两条指令为跳转指令,不同之处在于bl指令除了跳转之外,还将返回地址保存在lr寄存器中。 mov 这个指令可以把一个寄存器的值赋给另一个寄存器,或者把一个常熟赋给寄存器。常数必须能用立即数来表示 当不能用立即数来表示时可以使用ldr命令来赋值。ldr是伪指令,它不是真实存在的指令,编译器会把它扩展成真正的命令。 ldr r1, =label 当它的第二个参数前有=号时,表示伪指令,否则表示内存访问指令 ldr r1, [r2, #4] 将地址r2+4的内存单元数据读取到r1中 ldr r1, [r2] 将地址为r2的内存单元的数据读取到r1中 ldr r1, [r2], #4 将地址为r2的内存单元数据读取到r1中,然后r2 = r2+4 str r1, [r2, #4] 将r1的数据保存到地址为r2+4的内存单元中 str r1, [r2] 将r1的数据保存到地址为r2的内存单元中 str r1, [r2], #4