ARM高分笔记--(二)ARM寄存器

一、

1、ARM 共有37个32位的寄存器,其中:31个通用寄存器,6个状态寄存器。

2、这些寄存器不能同时被访问,ARM的工作状态和运行模式决定了哪些集训器可以访问哪些不能被访问。

3、但,任何时候:15个通用寄存器 R0~R14 、 程序计数器PC 和 一个状态寄存器都是可以被访问的。 

二、

1、ARM 状态下的通用寄存器和程序计数器

ARM高分笔记--(二)ARM寄存器_第1张图片

R0  ~ R12  ,13个

R8_fiq ~ R14_fiq ,7个

R13、R13_svc 、R13_abt、R13_irq、R13_und ,5个

R14、R14_svc、R14_abt、R14_irq、R14_und,5个

R15

13+7+10+1 = 31

2、ARM状态下的程序状态寄存器


三、寄存器分组

1、不分组寄存器(不同工作模式下,他们都可以用)

R0~R7

2、分组寄存器(不同工作模式下,他们可能不一样)

R8~R14

分组寄存器中的几个特殊寄存器

(1)fiq 快速中断模式下,全部使用独立的分组寄存器

(2)R13 用作 堆栈指针 sp

(3)R14 用作子程序链接寄存器,LR(link register)用来指向函数的返回地址

R13 和 R14 不同工作模式下各不相同

3、程序计数器 R15  PC

四、状态寄存器 :CPSR 和 SPSR

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

2、SPSR 用于在异常模式下保存当前CPSR的值,为了方便在异常返回后,恢复异常发生时的工作状态

图见:


ARM的状态寄存器 只使用了32位中的12位,他们分别是: 低位的8个控制位(5个模式位+T+F+I)和高位的4个条件码标志位(N+Z+C+V)

你可能感兴趣的:(ARM高分笔记--(二)ARM寄存器)