ARM CPU 寄存器体系与缩略语大全
ARM 处理器的寄存器体系是理解指令执行、异常处理、上下文切换以及用户态与内核态切换的基础。无论是在 Linux 内核、RTOS(如 Zephyr)、Bootloader,还是在裸机系统中,寄存器都是连接软件与硬件的关键接口。
本文以 ARMv7 与 ARMv8-A 架构为主,对 ARM CPU 寄存器进行系统梳理,并整理一份寄存器相关缩略语大全,便于工程实践查阅。
ARM 寄存器总体分类
ARM CPU 寄存器从功能角度可分为以下几类:
通用寄存器
程序状态寄存器
异常与模式相关寄存器
系统控制寄存器
协处理器与系统寄存器
调试与性能监控寄存器
浮点与 SIMD 寄存器
通用寄存器(General Purpose Registers)
ARMv7(AArch32)
ARMv7 架构提供 16 个可见通用寄存器:
|---------|----|---------|
| 寄存器 | 别名 | 说明 |
| R0--R12 | - | 通用寄存器 |
| R13 | SP | 栈指针 |
| R14 | LR | 返回地址寄存器 |
| R15 | PC | 程序计数器 |
在常见的 ABI 约定中:
R0--R3 用于函数参数和返回值
R4--R11 为被调用者保存寄存器
R12 用作过程内临时寄存器
SP、LR、PC 在异常和上下文切换中具有特殊意义
ARMv8-A(AArch64)
ARMv8-A 使用 64 位通用寄存器:
|---------|----------------|
| 寄存器 | 说明 |
| X0--X30 | 64 位通用寄存器 |
| W0--W30 | X 寄存器的低 32 位 |
| X31 | SP 或 ZR(依指令语义) |
| PC | 程序计数器 |
AAPCS64 调用约定中:
X0--X7 用于参数和返回值
X19--X28 为被调用者保存寄存器
X29 为帧指针
X30 为链接寄存器
程序状态寄存器
CPSR(ARMv7)
CPSR 保存当前处理器状态:
|----|----------|
| 位域 | 含义 |
| N | 负数标志 |
| Z | 零标志 |
| C | 进位标志 |
| V | 溢出标志 |
| I | IRQ 屏蔽 |
| F | FIQ 屏蔽 |
| T | Thumb 状态 |
| M | CPU 模式 |
SPSR
SPSR 用于在异常发生时保存 CPSR 的值。每种异常模式都有独立的 SPSR,用于异常返回时恢复处理器状态。
ARMv8 的 PSTATE
ARMv8 将 CPSR 拆分为多个独立的系统寄存器,例如:
|-----------|--------|
| 寄存器 | 作用 |
| NZCV | 条件码标志 |
| DAIF | 中断屏蔽位 |
| CurrentEL | 当前异常级 |
| SPSR_ELx | 异常返回状态 |
异常级与异常寄存器
ARMv8 定义了四个异常级:
|-----|--------|
| 异常级 | 用途 |
| EL0 | 用户态 |
| EL1 | 操作系统内核 |
| EL2 | 虚拟化管理器 |
| EL3 | 安全监控 |
每个异常级都有对应的关键寄存器,包括 SP_ELx、ELR_ELx 和 SPSR_ELx。
系统控制寄存器
SCTLR
SCTLR 控制处理器的核心行为:
|---|--------|
| 位 | 含义 |
| M | MMU 使能 |
| C | 数据缓存 |
| I | 指令缓存 |
| A | 对齐检查 |
地址转换相关寄存器
|-------|-----------|
| 寄存器 | 说明 |
| TTBR0 | 用户空间页表基址 |
| TTBR1 | 内核空间页表基址 |
| TCR | 地址转换与页表控制 |
这些寄存器是 MMU 与虚拟内存机制的核心。
协处理器与系统寄存器
在 ARMv7 中,系统寄存器通过 CP15 访问,例如系统控制、页表和异常向量配置等。
ARMv8 使用专用的系统寄存器和 MRS/MSR 指令进行访问,逻辑更清晰,也更利于虚拟化支持。
中断相关寄存器
在使用 GIC 的系统中,CPU 接口寄存器包括:
|------|-------|
| 寄存器 | 说明 |
| IAR | 中断确认 |
| EOIR | 中断结束 |
| PMR | 优先级屏蔽 |
| CTLR | 接口控制 |
浮点与 SIMD 寄存器
ARM 提供独立的浮点与向量寄存器体系:
|------------|-----------------|
| 类型 | 寄存器 |
| VFP | S0--S31,D0--D31 |
| NEON | Q0--Q15 |
| ARMv8 SIMD | V0--V31 |
配套寄存器还包括 FPSR 与 FPCR,用于控制和记录浮点运算状态。
调试与性能监控寄存器
ARM 提供丰富的调试与性能分析寄存器:
|-------|--------------|
| 模块 | 代表寄存器 |
| PMU | PMCR,PMCCNTR |
| Debug | BVR,BCR,WVR |
这些寄存器常用于性能分析、断点调试和系统追踪。
ARM CPU 寄存器缩略语大全
通用与状态相关
GPR:General Purpose Register
SP:Stack Pointer
LR:Link Register
PC:Program Counter
CPSR:Current Program Status Register
SPSR:Saved Program Status Register
PSTATE:Processor State
内存管理相关
MMU:Memory Management Unit
TTBR:Translation Table Base Register
TCR:Translation Control Register
ASID:Address Space Identifier
TLB:Translation Lookaside Buffer
异常与中断相关
EL:Exception Level
VBAR:Vector Base Address Register
GIC:Generic Interrupt Controller
EOI:End Of Interrupt
浮点与 SIMD
VFP:Vector Floating Point
NEON:Advanced SIMD
SVE:Scalable Vector Extension
FPSR:Floating-point Status Register
FPCR:Floating-point Control Register
调试与性能
PMU:Performance Monitor Unit
ETM:Embedded Trace Macrocell
DWT:Data Watchpoint and Trace