ARM有37个寄存器,31个通用寄存器(R0-R15 32位)和6个状态寄存器
1.通用寄存器
用户模式、系统模式、特权模式、中止模式、未定义指令模式、外部中断模式、快速中断模式。
可分为:
未备份寄存器R0-R7
备份寄存器 R8-R14
程序计数器 PC(R15)
注:R0-R7在所有模式下指的同一物理寄存器。R8-R14对应了两个不同的物理寄存器,R13-R14对应了6个不同的物理寄存器。PC(R15)
r15充当程序寄存器PC,r14(link register)存储子程序的返回地址,r13存储的是堆栈地址。
一些寄存器(r13,r14)在异常发生时会产生新的instances,比如IRQ处理器模式,这时处理器使用r13_irq和r14_irq
2.程序状态寄存器
CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。每一种模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。
在异常退出时,可以用 SPSR中保存的值来恢复CPSR。CPSR的具体格式如下。
31 30 29 28 27 26 7 6 5 4 3 21 0
N Z C V Q DNMLRAZ I F I M4 M3 M M0
N(Negative)、Z(Zero)、C(Carry)及V(oVerflow)统称为条件标志位。
Q标志位,主要用于指示增强的DSP指令是否发生了溢出
CPSR的低8位I、F、T及M[4:0]统称为控制位,当异常中断发生时这些位发生变化。
1.用户模式(usr):ARM处理器正常的程序执行状态;
2. 快速中断模式(fiq):用于高速数据传输或通道管理;
3. 外部中断模式(irq):用于通用的中断处理;
4. 管理模式(svc):操作系统使用的保护模式;
5. 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护;
6. 系统模式(sys):运行具有特权的操作系统任务;
7. 未定义指令中止模式(und):当未定义指令执行时进入该模式,可用于支持硬件协处理器的软件仿真
更多可参考