ARM处理器寄存器

参考:ARM Architecture Reference Manual39

 

 

 

1ARM处理器寄存器纵览

       clip_image002

ARM微处理器共有3732位寄存器,其中31个为通用寄存器(R13R13_svc不是同一个寄存器),6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14R0、程序计数器PC、一个状态寄存器都是可访问的。

 

clip_image004

1.1通用寄存器

 

    R0R15

    R13_svcR14_svc

    R13_abtR14_abt

    R13_undR14_und

    R13_irqR14_irq

    R8_fiq R14_fiq

 

²  不分组通用寄存器

R0-R7是不分组寄存器。这意味着在所有处理器模式下,访问的都是同一个物理寄存器。不分组寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合不分组通用寄存器都可以使用未分组寄存器。

 

²  分组通用寄存器

 

v分组寄存器R8-R12

       1. FIQ模式分组寄存器R8-R12

   2. FIQ以外的分组寄存器R8-R12

 

v分组寄存器R13R14

       1. 寄存器R13通常用做堆栈指针SP

   2. 寄存器R14用作子程序链接寄存器LinkRegisterLR),也称为LR,指向函数的返回地址

  

²  程序计数器

寄存器R15被用作程序计数器,也称为PC 。其值等于当前正在执行的指令的地址+8(因为在取址和执行之间多了一个译码程序计数器的阶段)

 

 

1.2、 状态寄存器

Ø  CPSR

Ø  SPSR_svc

Ø  SPSR_abt

Ø  SPSR_und

Ø  SPSR_irq

Ø  SPSR_fiq

 

      ARM所有工作模式下都可以访问程序状态寄存器CPSRCPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。

   CPSR每种异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的值,以便异常返回后恢复异常发状态寄存器生时的工作状态。

 

clip_image006

 

clip_image008

 

Program status registers重点要掌握的几个位

clip_image010

clip_image012

clip_image014

clip_image016

 

 

 

 

 

原文地址:https://www.cnblogs.com/LoTGu/p/5925073.html