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

相关推荐
陌上花开缓缓归以8 小时前
LiteOS和RTOS 系统选型分析
arm开发
深圳市九鼎创展科技10 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
森焱森13 小时前
嵌入式硬件工程师应知 白银快速分析报告
linux·c语言·arm开发·嵌入式硬件·去中心化
森G1 天前
七、04ledc-sdk--------makefile有变化
linux·c语言·arm开发·c++·ubuntu
VekiSon1 天前
Linux内核驱动——杂项设备驱动与内核模块编译
linux·c语言·arm开发·嵌入式硬件
AI+程序员在路上1 天前
Nand Flash与EMMC区别及ARM开发板中的应用对比
arm开发
17(无规则自律)1 天前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
梁洪飞2 天前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
代码游侠2 天前
学习笔记——Linux字符设备驱动
linux·运维·arm开发·嵌入式硬件·学习·架构
syseptember3 天前
Linux网络基础
linux·网络·arm开发