一、栈与寄存器
① 栈
- 栈:是一种具有特殊的访问方式的存储空间(即先进后出 Last In First Out, LIFO):
- 高地址往低地址存数据(存:高–>低);
- 栈空间开辟:往低地址开辟(开辟:高–>低)。
② SP 和 FP 寄存器
- SP 寄存器:在任意时刻会保存栈顶的地址;
- FP 寄存器(也称为 x29 寄存器):属于通用寄存器,但是在某些时刻(例如函数嵌套调用时)可以利用它保存栈底的地址;
- arm64 开始,取消了 32 位的 LDM、STM、PUSH、POP 指令,取而代之的是 ldr/ldp、str/stp(r 和 p 的区别在于处理的寄存器个数,r 表示处理 1 个寄存器,p 表示处理两个寄存器);