[缩略语大全]之[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

相关推荐
松涛和鸣1 天前
DAY55 Getting Started with ARM and IMX6ULL
linux·服务器·网络·arm开发·数据库·html
暮云星影1 天前
一、linux系统 应用开发:基本认知概念
linux·arm开发
灵哎惹,凌沃敏1 天前
一句话总结IIC协议
arm开发·单片机·开源协议
ShiMetaPi1 天前
GM-3568JHF丨ARM+FPGA异构开发板应用开发教程:01 UART读写案例
arm开发·单片机·嵌入式硬件·fpga开发·fpga·rk3568
松涛和鸣1 天前
55、ARM与IMX6ULL入门
c语言·arm开发·数据库·单片机·sqlite·html
代码游侠1 天前
学习笔笔记——ARM 嵌入式系统与内核架构
arm开发·笔记·嵌入式硬件·学习·架构
VekiSon1 天前
ARM架构——从嵌入式系统底层到指令执行解析
linux·arm开发·架构
2023自学中1 天前
Linux,安装 ARM 交叉编译器
linux·arm开发
蓁蓁啊1 天前
解决 GCC 工具链自动链接 libg.a 导致的链接失败问题
linux·服务器·前端·arm开发·嵌入式硬件
2301_772204281 天前
ARM基础知识
arm开发