ARM64
寄存器
- x0 - x30 共31个通用寄存器,均为64bit,w0 - w30用来访问低32bit;
- x29:用来充当FP,intel是ebp;
- x30:充当lr寄存器,用来保存函数返回后的下一条执行地址;
- SP:保存栈顶指针,使用 SP/WSP来进行对SP寄存器的访问,64bit,intel是esp;
- PC:程序计数器,俗称PC指针,总是指向即将要执行的下一条指令,在arm64中,软件是不能改写PC寄存器的,64bit
- CPSR:状态寄存器,64bit;
常规指令
ARM64指令长度是32bit。
- MOV X1,X0 ;将寄存器X0的值传送到寄存器X1
- ADD X0,X1,X2 ;寄存器X1和X2的值相加后传送到X0
- SUB X0,X1,X2 ;寄存器X1和X2的值相减后传送到X0
- AND X0,X0,#0xF ; X0的值与0xF相位与后的值传送到X0
- ORR X0,X0,#9 ; X0的值与9相位或后的值传送到X0
- EOR X0,X0,#0xF ; X0的值与0xF相异或后的值传送到X0
- LDR X5,[X6,#0x08] ;X6寄存器加0x08的和的地址值内的数据传送到X5
LDR X0, [X1] Load from the address in X1
LDR X0, [X1, #8] Load from address X1 + 8
LDR X0, [X1, X2] Load from address X1 + X2
LDR X0, [X1, X2, LSL, #3] Load from address X1 + (X2 << 3)
LDR X0, [X1, W2, SXTW] Load from address X1 + sign extend(W2)
LDR X0, [X1, W2, SXTW, #3] Load from address X1 + (sign extend(W2) << 3) - STR X0, [SP, #0x8] ;X0寄存器的数据传送到SP+0x8地址值指向的存储空间
- STP x29, x30, [sp, #0x10] ;入栈指令,一