0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >基础知识 > ARM体系结构之寄存器详解

ARM体系结构之寄存器详解

来源: elecfans
2020-09-02
类别:基础知识
eye 87
文章创建人 拍明

原标题:ARM体系结构之寄存器详解

ARM体系结构中的寄存器是处理器执行指令、管理数据和控制流程的核心组件。其设计兼顾了高性能、低功耗和灵活性,不同ARM架构版本(如ARMv7、ARMv8/ARM64)的寄存器配置有所差异。以下从通用寄存器、特殊功能寄存器、状态寄存器、系统寄存器四个维度展开详解,并对比32位与64位架构的差异。


一、通用寄存器(General-Purpose Registers, GPRs)

通用寄存器用于存储数据、地址和中间计算结果,是程序执行中最频繁访问的寄存器组。

1. ARMv7(32位架构)

  • 数量:16个(R0-R15),其中部分有特殊用途。

  • 核心寄存器

    • R0-R3:常用于函数参数传递和返回值。

    • R12:内部临时寄存器(IP,Intra-Procedure-call scratch register)。

    • R0-R12:通用数据寄存器,无固定用途,由程序员自由分配。

    • R13(SP):栈指针(Stack Pointer),指向当前线程的栈顶。

    • R14(LR):链接寄存器(Link Register),存储子程序返回地址(BL指令自动更新)。

    • R15(PC):程序计数器(Program Counter),指向下一条要执行的指令地址。

2. ARMv8(64位架构/AArch64)

  • 数量:32个(X0-X30),另加32个32位别名(W0-W30)。

  • 核心寄存器

    • X0-X28:通用64位寄存器,W0-W28为其低32位别名。

    • X29(FP):帧指针(Frame Pointer),用于栈帧管理(可选,编译器可优化省略)。

    • X30(LR):链接寄存器,功能同ARMv7的R14。

    • XZR/WZR:零寄存器(Zero Register),读操作返回0,写操作被忽略。

    • SP(X31):栈指针,与ARMv7的R13功能一致,但64位模式下独立编号。

3. 关键差异

  • 数量扩展:ARMv8从16个增加到32个,支持更复杂的计算和函数调用。

  • 64位支持:X寄存器可存储64位数据,W寄存器提供32位兼容。

  • 帧指针:ARMv8明确支持FP,而ARMv7中需通过R11或自定义寄存器实现。


QQ_1751438737685.png


二、特殊功能寄存器(Special-Purpose Registers)

用于控制处理器行为或访问特定硬件功能。

1. 程序状态寄存器(PSR, Program Status Register)

  • 组成:分为CPSR(当前PSR)和SPSR(保存的PSR,用于异常处理)。

  • 核心标志位

    • N(Negative):结果为负时置1。

    • Z(Zero):结果为零时置1。

    • C(Carry):进位或借位标志。

    • V(Overflow):算术溢出时置1。

    • T(Thumb状态):ARMv7中指示当前是否处于Thumb指令集模式。

    • M[4:0](模式位):定义处理器模式(如用户模式、FIQ模式等)。

  • ARMv8差异

    • PSR拆分为PSTATE(程序状态)和独立的系统寄存器(如DAIF控制中断屏蔽)。

    • 标志位通过MSR/MRS指令访问,而非直接操作PSR。

2. 程序计数器(PC)

  • 功能:指向下一条指令地址,ARMv7中为R15,ARMv8中为X31(但通常不直接操作)。

  • 分支指令

    • B(无条件跳转)、BL(跳转并保存返回地址到LR)。

    • BX(跳转并切换Thumb/ARM状态)、BLX(跳转+切换状态+保存返回地址)。

3. 栈指针(SP)

  • 功能:指向当前栈顶,支持压栈(PUSH/STR)和弹栈(POP/LDR)。

  • ARMv8优化

    • 支持多个栈指针(如EL1特权级使用SP_EL1),实现特权级隔离。


三、状态寄存器与异常处理

ARM通过状态寄存器管理异常(中断、未定义指令等)和特权级。

1. 异常模式(ARMv7)

  • 7种模式

    • 用户模式(User):普通应用程序运行模式,无特权操作。

    • FIQ/IRQ模式:快速中断/普通中断处理模式,有独立寄存器组(R8-R12_fiq/irq)。

    • 管理模式(Supervisor):操作系统内核运行模式(如svc指令触发)。

    • 中止模式(Abort):内存访问错误时进入。

    • 未定义模式(Undefined):执行未定义指令时进入。

    • 系统模式(System):运行特权任务,寄存器组与用户模式共享。

  • 寄存器组切换

    • 进入异常时,自动保存CPSR到SPSR,并切换到异常模式对应的寄存器组。

2. ARMv8异常处理

  • 4种异常级别(EL0-EL3)

    • EL0:用户空间(应用程序)。

    • EL1:操作系统内核(如Linux)。

    • EL2:虚拟机监控器(Hypervisor)。

    • EL3:安全监控器(Secure Monitor,如TrustZone)。

  • 系统寄存器

    • SPSR_ELx:保存异常返回时的PSTATE。

    • ELR_ELx:保存异常返回地址(类似ARMv7的LR)。

    • DAIF:控制调试、SError、IRQ、FIQ的屏蔽状态。

四、系统寄存器(ARMv8新增)

ARMv8引入大量系统寄存器,用于控制处理器特性(如缓存、MMU、安全监控)。

1. 关键系统寄存器

  • SCTLR_EL1:系统控制寄存器,配置MMU、缓存、对齐检查等。

  • TTBR0_EL1/TTBR1_EL1:页表基址寄存器,定义虚拟地址到物理地址的映射。

  • MAIR_EL1:内存属性间接寄存器,定义内存区域的访问权限(如设备、缓存策略)。

  • ESR_ELx:异常综合寄存器,记录异常原因(如数据中止、SVC调用号)。

2. 访问方式

  • MRS/MSR指令

MRS X0, SCTLR_EL1    ; 读取系统寄存器到通用寄存器 MSR SCTLR_EL1, X0    ; 将通用寄存器值写入系统寄存器

  • 特权级限制:低特权级(如EL0)无法访问高特权级寄存器。


五、寄存器使用最佳实践

  1. 通用寄存器分配

    • 优先使用R0-R3(ARMv7)或X0-X7(ARMv8)传递参数,减少栈操作。

    • 避免随意覆盖LR和SP,函数返回前需恢复。

  2. 异常处理

    • ARMv7中,FIQ模式有独立寄存器组,适合低延迟中断。

    • ARMv8中,通过ERET指令从异常返回,需正确设置SPSR_ELx和ELR_ELx。

  3. 64位迁移

    • ARMv8中,32位计算需显式使用W寄存器(如ADD W0, W1, W2)。

    • 零扩展与符号扩展指令(如SXTBUXTH)需谨慎使用。


六、总结


特性ARMv7(32位)ARMv8(64位)
通用寄存器R0-R15(16个)X0-X30(32个)+ W0-W30别名
状态寄存器CPSR/SPSRPSTATE + 独立系统寄存器(如DAIF)
异常级别7种模式(用户、FIQ、IRQ等)4级特权(EL0-EL3)
系统寄存器少量(如CP15协处理器)大量(控制MMU、缓存、安全等)


ARM寄存器设计体现了精简指令集(RISC)的核心思想:固定长度指令、负载均衡的寄存器组、明确的硬件控制。理解寄存器布局和行为是优化性能(如减少内存访问)、调试低级代码(如中断处理)和迁移架构(如从ARMv7到ARMv8)的关键。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

资讯推荐
云母电容公司_云母电容生产厂商

云母电容公司_云母电容生产厂商

开关三极管13007的规格参数、引脚图、开关电源电路图?三极管13007可以用什么型号替代?

开关三极管13007的规格参数、引脚图、开关电源电路图?三极管13007可以用什么型号替代?

74ls74中文资料汇总(74ls74引脚图及功能_内部结构及应用电路)

74ls74中文资料汇总(74ls74引脚图及功能_内部结构及应用电路)

芯片lm2596s开关电压调节器的中文资料_引脚图及功能_内部结构及原理图_电路图及封装

芯片lm2596s开关电压调节器的中文资料_引脚图及功能_内部结构及原理图_电路图及封装

芯片UA741运算放大器的资料及参数_引脚图及功能_电路原理图?ua741运算放大器的替代型号有哪些?

芯片UA741运算放大器的资料及参数_引脚图及功能_电路原理图?ua741运算放大器的替代型号有哪些?

28nm光刻机卡住“02专项”——对于督工部分观点的批判(睡前消息353期)

28nm光刻机卡住“02专项”——对于督工部分观点的批判(睡前消息353期)

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告