【嵌入式汇编基础】-ARM架构基础(五)
ARM架构基础(五)
文章目录
- ARM架构基础(五)
-
- 8、AArch32 执行状态
-
- 8.9 堆栈指针
- 8.10 帧指针
- 8.11 链接寄存器
- 8.12 过程内调用寄存器 (IP, r12)
- 8.13 当前程序状态寄存器
- 8.14 应用程序状态寄存器
-
- 8.14.1 直接访问 APSR
- 8.14.2 NZCV标志位
- 8.14.3 Q 标志
- 8.14.4 GE 标志
- 8.15 执行状态寄存器
-
- 8.15.1 指令集状态寄存器
- 8.15.2 IT 块状态寄存器 (ITSTATE)
- 8.16 字节序状态
- 8.17 模式位和异常屏蔽位
8、AArch32 执行状态
8.9 堆栈指针
程序使用堆栈指针 (SP, r13) 来保存对当前线程正在使用的内存临时区域(称为堆栈)顶部的引用。该寄存器可以轻松高效地存储和访问堆栈中的临时数据(例如局部变量),以及在函数开始和结束时高效地存储和恢复寄存器和返回地址。
8.10 帧指针
帧指针 (FP, r11) 跟踪当前活动的堆栈帧,函数使用该帧来存储其局部变量。使用 FP 相对加载和存储可以高效地执行局部变量的读写操作。
8.11 链接寄存器
链接寄存器 (LR, r14) 用于存储函数的返回地址。在 A32 和 T32 指令集中,函数都是使用 BL 或 BLX 指令调用的。这些指令将 PC 设置为被调用函数的第一条指令,并隐式地将 LR 设置为该函数完成后的返回地址,即紧接着 BL 或 BLX 指令的指令地址。在 A32 中,函数完成后,通常会使用 BX LR 或类似指令将返回地址从 LR 复制回 PC 返回到调用者,从而允许函数调用者从中断处继续执行。
8.12 过程内调用寄存器 (IP, r12)
在给定函数中,过程内调用寄存器 (IP, r12) 与任何其他通用寄存器类似。它的名称源于编译器和链接器在实现过程内“蹦床”时将 r12 用作临时寄存器的方式。这种蹦床最常见的例子是通过