目录
一 ARM 架构中的寄存器
ARM 架构中的寄存器
在 ARM 架构中,寄存器是 CPU 内部用于存储数据、地址和状态信息的关键组件。ARM 架构定义了一系列的寄存器,包括通用寄存器、状态寄存器、程序计数器等。下面是对 ARM 架构中主要寄存器的介绍:
通用寄存器
通用寄存器是一组用于存储数据和地址的寄存器。在 ARM 架构的不同版本中,这些寄存器的数量和命名有所不同。
-
R0-R15 (R0-R14 + PC):
- 在 ARMv7 和之前的版本中,有 16 个通用寄存器,编号从 R0 到 R15。
- R0 到 R14 用于存储数据和地址。
- R15 通常被称为程序计数器(PC),用于存储下一条指令的地址。
-
X0-X30 (X0-X29 + SP):
- 在 ARMv8 和之后的版本中,有 31 个通用寄存器,编号从 X0 到 X30。
- X0 到 X29 用于存储数据和地址。
- X30 通常被称为链接寄存器(LR),用于保存返回地址。
- X31 通常被称为堆栈指针(SP),用于管理堆栈。
状态寄存器
状态寄存器用于存储 CPU 的状态信息,例如标志位、中断使能状态等。
- Program Status Register (PSR):
- PSR 是 ARM 架构中的一个重要的状态寄存器,包含了多个子寄存器,用于存储 CPU 的状态信息。
- PSR 包括:
- Application Program Status Register (APSR): 用于存储条件码标志位(如 N、Z、C、V 等)。
- Implementation-defined Program Status Register (IPSR): 用于指示当前正在处理的中断。
- Program Status Register (EPSR): 用于存储控制位,如中断使能位。
控制寄存器
控制寄存器用于控制 CPU 的行为,如中断控制、调试控制等。
- Control Register (CTRL):
- 用于控制某些 CPU 特性,如是否启用调试模式等。
- Auxiliary Control Register (ACTLR):
- 用于控制辅助特性,如性能监控单元(PMU)等。
特殊用途寄存器
除了通用寄存器和状态寄存器之外,ARM 架构还包括一些特殊用途的寄存器。
- Stack Pointer (SP):
- 用于管理堆栈,通常映射到通用寄存器 X31/R13。
- Link Register (LR):
- 用于保存返回地址,通常映射到通用寄存器 X30/R14。
- Program Counter (PC):
- 用于存储下一条指令的地址,通常映射到通用寄存器 X15/R15。
- System Register (SYSREG):
- 用于控制和监视 CPU 的各种特性和状态,如中断控制、缓存控制等。
总结
-
通用寄存器:
- 用于存储数据、地址等。
- 在 ARMv7 和之前版本中,编号为 R0 到 R15。
- 在 ARMv8 和之后版本中,编号为 X0 到 X30。
- R15/X15 通常称为程序计数器(PC)。
- X30 通常称为链接寄存器(LR)。
- X31/R13 通常称为堆栈指针(SP)。
-
状态寄存器:
- 用于存储 CPU 的状态信息,如条件码标志位等。
- 包括 APSR、IPSR 和 EPSR。