ARM AArch32和AArch64通用寄存器、状态寄存器_arm64 寄存器

T32(Thumb)状态下的寄存器组织

Thumb状态是ARM指令集的精简子集,旨在提升代码密度。其寄存器访问规则如下:

  • 低寄存器(R0-R7):可直接访问,无操作限制。
  • 高寄存器(R8-R15) :需通过特定指令(如MOVADDCMP)间接操作,通常用于临时数据或上下文切换。
  • 特殊寄存器
    • R13(SP):栈指针,维护函数调用栈。
    • R14(LR):链接寄存器,保存返回地址。
    • R15(PC):程序计数器,Thumb状态下指向当前指令地址+4(因流水线机制)。

AArch32关键寄存器解析

通用寄存器
  • R0-R12:通用数据寄存器。
  • R13(SP):每个异常模式(如IRQ、SVC)拥有独立栈指针,避免上下文保存开销。
  • R14(LR):保存函数或异常返回地址,AArch32中未完全分离异常与函数返回。
  • R15(PC):ARM状态读取值为当前指令+8,Thumb状态为+4。
状态与控制寄存器
  • CPSR:存储CPU模式(M4:0)、Thumb状态位(T)、中断标志等。
  • SPSR:异常发生时备份CPSR,不同模式(如IRQ、SVC)有独立副本。
  • VBAR/HVBAR:异常向量表基址寄存器,决定异常跳转目标。
  • ESR_ELx:记录异常原因(如EC字段区分指令/数据异常)。

AArch64寄存器体系改进

通用寄存器
  • X0-X30:64位通用寄存器,32位访问通过W0-W30。X30默认作为LR使用。
  • ELR_ELx:独立保存异常返回地址(如ELR_EL1),与函数返回地址分离。
栈与程序状态
  • SP_ELx :每个异常等级(EL0-EL3)拥有独立栈指针,通过SPSel选择使用模式。
  • PSTATE:替代CPSR,整合NZCV(条件标志)、DAIF(中断屏蔽)、CurrentEL(当前异常等级)。
中断与异常
  • DAIF:D/A/I/F位分别控制调试、SError、IRQ、FIQ的屏蔽状态。
  • CurrentEL:明确标识当前运行等级(如EL1为内核态)。

AArch32与AArch64核心差异

对比项 AArch32 AArch64
位宽 32位 64位
PC行为 ARM状态+8,Thumb+4 固定指向当前指令
异常模型 模式切换(如IRQ/SVC) 异常等级(EL0-EL3)
虚拟化支持 需扩展 原生集成

总结

AArch64通过统一寄存器设计、固定指令长度(32bit)和异常等级机制,显著优化了性能与安全性。现代系统(如Linux ARM64、Apple Silicon)均基于此架构,兼容性更强且更易优化。

编程语言C++www.dyhaofan.com++C语言的魅力

编程语言C++www.share.dyhaofan.com++C语言的魅力

编程语言C++share.dyhaofan.com++C语言的魅力

编程语言C++m.dyhaofan.com++C语言的魅力

编程语言C++www.blog.dyhaofan.com++C语言的魅力

编程语言C++read.share.dyhaofan.com++C语言的魅力

编程语言C++www.yekewu.com++C语言的魅力

编程语言C++www.share.yekewu.com++C语言的魅力

编程语言C++share.yekewu.com++C语言的魅力

编程语言C++m.yekewu.com++C语言的魅力

编程语言C++www.blog.yekewu.com++C语言的魅力

编程语言C++read.share.yekewu.com++C语言的魅力

编程语言C++www.niaoqiaj.com++C语言的魅力

编程语言C++www.share.niaoqiaj.com++C语言的魅力

编程语言C++share.niaoqiaj.com++C语言的魅力

编程语言C++m.niaoqiaj.com++C语言的魅力

编程语言C++www.blog.niaoqiaj.com++C语言的魅力

编程语言C++read.share.niaoqiaj.com++C语言的魅力

编程语言C++www.yaodianhuixiang.com++C语言的魅力

编程语言C++www.share.yaodianhuixiang.com++C语言的魅力

编程语言C++share.yaodianhuixiang.com++C语言的魅力

编程语言C++m.yaodianhuixiang.com++C语言的魅力

编程语言C++www.blog.yaodianhuixiang.com++C语言的魅力

编程语言C++read.share.yaodianhuixiang.com++C语言的魅力

编程语言C++www.huajinys.com++C语言的魅力

编程语言C++www.share.huajinys.com++C语言的魅力

编程语言C++share.huajinys.com++C语言的魅力

编程语言C++m.huajinys.com++C语言的魅力

编程语言C++www.blog.huajinys.com++C语言的魅力

编程语言C++read.share.huajinys.com++C语言的魅力

编程语言C++www.biodcn.com++C语言的魅力

编程语言C++www.share.biodcn.com++C语言的魅力

编程语言C++share.biodcn.com++C语言的魅力

编程语言C++m.biodcn.com++C语言的魅力

编程语言C++www.blog.biodcn.com++C语言的魅力

编程语言C++read.share.biodcn.com++C语言的魅力

相关推荐
LCMICRO-1331084774618 小时前
国产长芯微LPS7118完全pin-pin替代ADP7118,是一款采用 CMOS 技术设计的低噪声、高 PSRR、快速瞬态响应、低压差线性稳压器
arm开发·单片机·嵌入式硬件·fpga开发·硬件工程·线性稳压器·adp7118
LCMICRO-1331084774618 小时前
国产长芯微LM3042完全P2P替代LT3042,是一款高性能低压差线性稳压器
arm开发·单片机·嵌入式硬件·fpga开发·硬件工程·线性稳压器·lt3042
2401_8275012821 小时前
Linux系统移植
linux·arm开发·单片机
神罚天下ET2 天前
典型arm位单片机启动流程(从上电到main.c)
c语言·arm开发·单片机
振南的单片机世界2 天前
高优先级“插队”,低优先级让路:中断嵌套的核心规则
arm开发·stm32·单片机·嵌入式硬件
Dlrb12113 天前
ARM---IMX6ULL 的 PWM 模块介绍及其程序的编写
arm开发·arm·pwm·imx6ull·lcd屏幕
byte轻骑兵3 天前
如何定制BlueZ编译:开启/关闭BLE/音频模块的编译参数配置
linux·arm开发·蓝牙·bluez·电脑蓝牙
亿道电子Emdoor4 天前
【Arm】MSP和PSP的区别简介
c语言·arm开发·单片机·mcu
Lee_jerome4 天前
《C/C++编译全家桶:g++四阶段、.a与.so区别、CMake构建、ARM交叉编译,这篇全讲透了》
c语言·开发语言·arm开发·c++·编译·cmake·cmakelists
Dlrb12115 天前
ARM---IMX6ULL的LCD模块简介及LCD驱动程序的编写
arm开发·lcd·arm·imx6ull·显存·像素