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

相关推荐
hongmai66688817 小时前
MP2348GTL-Z:这颗24V/4A同步降压芯片,把性能和体积平衡得恰到好处
c语言·开发语言·arm开发·单片机·5g
隔窗听雨眠2 天前
ARM架构下Logstash与Elasticsearch集群部署完全指南:从环境适配到生产验证
arm开发·elasticsearch·架构
郭老师-嵌入式2 天前
arm linux 移植 udhcp 与 使用
linux·服务器·arm开发
深念Y3 天前
登录日志与管理员审计日志存储决策
前端·arm开发·后端·微服务·云原生·架构
深念Y3 天前
微服务抽取路线图:从胖单体到 ARM 集群
前端·arm开发·数据库·后端·微服务·云原生·架构
亿道电子Emdoor4 天前
【Arm】如何高效实现2兆字节对齐
arm开发·单片机·mcu
姓刘的哦4 天前
STM32的启动流分析
linux·运维·arm开发
zlinear数据采集卡4 天前
FRAM铁电存储器原理深度解析:D223校准参数的“永久保险箱“
arm开发·人工智能·stm32·单片机·fpga开发·开源
喜欢吃燃面5 天前
Linux网络编程深度解析:从Socket API到自定义协议设计
linux·网络·arm开发
rcms152702692185 天前
DS200ADCIH1ADB 输入 / 输出板
arm开发