[缩略语大全]之[ARM CPU]篇

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

相关推荐
17(无规则自律)3 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
梁洪飞15 小时前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
代码游侠1 天前
学习笔记——Linux字符设备驱动
linux·运维·arm开发·嵌入式硬件·学习·架构
syseptember2 天前
Linux网络基础
linux·网络·arm开发
代码游侠2 天前
学习笔记——Linux字符设备驱动开发
linux·arm开发·驱动开发·单片机·嵌入式硬件·学习·算法
程序猿阿伟2 天前
《Apple Silicon与Windows on ARM:引擎原生构建与模拟层底层运作深度解析》
arm开发·windows
wkm9562 天前
在arm64 ubuntu系统安装Qt后编译时找不到Qt3DExtras头文件
开发语言·arm开发·qt
unicrom_深圳市由你创科技2 天前
基于ARM+DSP+FPGA异构计算架构的高速ADC采集卡定制方案
arm开发·fpga开发
松涛和鸣2 天前
DAY69 Practical Guide to Linux Character Device Drivers
linux·服务器·arm开发·数据库·单片机·嵌入式硬件
松涛和鸣2 天前
69、Linux字符设备驱动实战
linux·服务器·网络·arm开发·数据库·驱动开发