ARM64常用的汇编指令
----------数据传送指令
MOV X1,X0 ;(move)将寄存器X0的值传送到寄存器X1
-------------------- 加载/存储指令 --------------------
LDR X5,[X6,#0x08] ;(load word)X6寄存器加0x08的和的地址值内的数据传送到X5
STR X0, [SP, #0x8] ;(store)X0寄存器的数据传送到SP+0x8地址值指向的存储空间
STP x29, x30, [sp, #0x10] ;入栈指令
LDP x29, x30, [sp, #0x10] ;出栈指令
CBZ ;比较(Compare),如果结果为零(Zero)就转移(只能跳到后面的指令)
CBNZ ;比较,如果结果非零(Non Zero)就转移(只能跳到后面的指令)
运算指令
-------------------- 算数运算指令 --------------------
ADD X0,X1,X2 ;(add)寄存器X1和X2的值相加后传送到X0,
SUB X0,X1,X2 ;(subtract)寄存器X1和X2的值相减后传送到X0,
CMP ;(compare)比较指令,相当于SUBS,影响程序状态寄存器CPSR
-------------------- 逻辑运算指令 --------------------
AND X0,X0,#0xF ;(and) X0的值与0xF相位与后的值传送到X0
EOR X0,X0,#0xF ; (exclusive or)X0的值与0xF相 异或 后的值传送到X0
ORR X0,X0,#9 ; (or)X0的值与9相位 或 后的值传送到X0
程序跳转指令
B B Lable ;(branch)程序无条件跳转到Lable处执行
BL BL Lable ; (branch with link) 当程序无条件跳转到label标号处执行时,同时将当前PC值保存在R14中
RET ;(return)子程序返回指令,返回地址默认保存在LR(X30)