【Android 逆向】【ARM汇编】 arm64部分知识
arm64寄存器更多
X0-X30 SP CPSR PC 64位
W0-W30 32位
PC寄存器的值禁止修改
参数放在 X0-X7/W0-W7
结果放在 X0
函数返回 RET 相当于 bl lr
Arm64 没有LR寄存器, lr用X30 栈底用X29
ARM64 取消了ldm/stm push/pop 取而代之 STP/LDP
STUR STR 区别
STUR X8, [X29, #var_F8]
STUR 代表向负数偏移 var_F8 就是个负数,X29是栈底位置 向栈顶偏移
STR X8, [SP, #0x220+var_110]
STR 代表向正数偏移, #0x220 是栈顶到栈底的距离 #0x220+var_110 是是个正数,SP是栈顶,代表栈顶向栈底偏移
WZR/XZR 0寄存器
STUR WZR , [X29, #100] 相当于 mov X0, 0 STR X0, [SP, #100]
乘法指令MADD
MADD W8, W8, W10, WZR 相当于 W8 = W8*W10+WZR
浮点数寄存器
浮点寄存器 64位: D0 - D31 32位: S0 - S31