ARM处理器共有37个寄存器。其中包括:31个通用寄存器,包括程序计数器(PC)在内,以及6个32位状态寄存器。

ARM处理器共有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。

任意的处理器模式下,都可见的寄存器包括15个通用寄存器(R0~R14)、一个或两个状态寄存器及程序计数器(PC)。

在所有的寄存器中,有些是各模式共用的同一个物理寄存器;有一些寄存器是各模式自己拥有的独立的物理寄存器。

ARM V7架构有多少个NEON寄存器 arm核有多少个寄存器_ARM V7架构有多少个NEON寄存器


其中ARM汇编器对ARM的寄存器进行了预定义,所有的寄存器和协处理器名都是大小写敏感的.预定义的寄存器如下:

1 Ro-R15和r0-r15

2 a1-a4(参数,结果或者临时寄存器,与r0-r3同意)

3 v1-v8(变量寄存器,与r4-r11同意)

4 sb和SB(静态基址寄存器,与r9同意)

5 sl和SL(堆栈限制寄存器,与r10同意)

6 fp和FP(帧指针,与r11同意)

7 ip和IP(过程调用中间临时寄存器,与r12同意)

8 sp和SP(堆栈指针,与r13同意)

9 lr和LR(链接寄存器,与r14同意)

10 pc和PC(程序计数器,与r15同意)

11 cpsr和CPSR(程序状态寄存器)

12 spsr和SPSR(程序状态寄存器)

13 f0-f7和F0-F7(FPA寄存器)

14 s0-s31和S0-S31(VFP单精度寄存器)

15 d0-d15和D0-D15(VFP双精度寄存器)

16 p0-p15(协处理器0-15)

17 c0-c15(协处理器寄存器0-15)

ARM7处理器采用了三级流水线结构,包括取指(fetch)、译码(decode)、执行(execute)三级),如上图所示,在执行add r0, r1, #5指令时,第二条指令正在译码阶段,而第三条指令正在取指阶段。在执行第一条指令时,PC寄存器应指向第三条指令。也即,当处理器为三级流水线结构时,PC寄存器总是指向随后的第三条指令;

ARM V7架构有多少个NEON寄存器 arm核有多少个寄存器_arm_02


当处理器处于ARM状态时,每条ARM指令为4个字节,所以PC寄存器的值为当前指令地址 + 8字节,当处理器处于Thumb状态时,每条Thumb指令为2字节,所以PC寄存器的值为当前指令地址 + 4字节。