我们先来看一张图:
这张图是ARM手册中的寄存器状态图,我想大部分人应该首先会想到它吧。正如手册中所讲的,这张图中包含37个32位寄存器,其中有31个通用寄存器和6个状态寄存器。CPU会根据不同的工作模式,使部分寄存器可见(即可被使用),图中有灰色下标的正是不同模式下可见的寄存器,被称为分组寄存器。未分组的寄存器在不同模式下都是可见的,但是在寄存器使用时,分组寄存器会屏蔽共享寄存器,从而实现特殊用途。
37个寄存器实际如下图所示:
转换成我们熟悉的手册中的图,如下图:
我们需要特殊指出几个寄存器:
1、R13 ——> SP,为堆栈寄存器,用于C语言类程序之间调用所需的空间指针;
2、R14 ——> LR,为连接寄存器,在发生程序调用时,一般用户存放程序返回地址;
3、R15 ——> PC,为程序计数寄存器,存放西一条要执行的程序码地址。
程序状态寄存器
CPSR(Current Program Status Register)表示当前程序状态寄存器,SPSR(Saved Program Status Register)用来保存异常程序处理个程序状态,这些寄存器的格式和功能见下图所示。
寄存器的具体详细描述见数据手册,另外我们在贴一张Thumb指令下的寄存器和对比图