ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。
但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式。
但在任何时候,通用寄存器R14~R0、程序计数器PC、一个状态寄存器都是可访问的。
未分组寄存器 R0 ~ R7,共8个;
分组寄存器 R8 ~ R12,R13 ~ R14
R8 ~ R12:其中FIQ模式下有单独的一组 R8 ~ R12,共5个;另外 6种模式共用一组R8 ~ R12,共5个;总共10个;
R13 ~ R14:其中USR和SYS模式(表格的第一列)共用一组R13 ~ R14共2个,另外5种模式下各有独自的一组R13 ~ R14共10个;总 共12个;
程序计数器 PC 即R15,共1个;
分组寄存器R13、R14
1、寄存器R13通常做堆栈指针SP
2、寄存器R14用作子程序链接寄存器(Link Register-LR),也称为LR,指向函数的返回地址。
上图中其中模式的详解
usr(用户模式):ARM处理器正常程序执行模式。
fiq(快速中断模式):用于高速数据传输或通道处理
irq(外部中断模式):用于通用的中断处理
svc(管理模式):操作系统使用的保护模式
abt (数据访问终止模式):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
sys(系统模式):运行具有特权的操作系统任务。
und(未定义指令中止模式):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。
图片