8.ARM寄存器详细解说ARM寄存器的简单分类:图1-1:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8.ARM寄存器详细解说ARM寄存器的简单分类:图1-1:相关的知识,希望对你有一定的参考价值。

8.ARM寄存器详细解说

ARM寄存器的简单分类:图1-1:

技术分享

图1-1

ARM微处理器中共有37个32位寄存器,其中31个通用寄存器,6个状态寄存器。但是这些寄存器不能被同时访问,在七种模式中,可以访问的寄存器种类不同。但是,通用寄存器R14——R0、程序计数器PC、一个状态寄存器cpsr都是可以被访问的。

具体的情况如下图1-2所示:

技术分享

图1-2

寄存器分类:

????1、不分组通用寄存器:

R0-R7是不分组寄存器。所谓不分组就是在七种模式下的任意一种模式都访问同一个物理寄存器地址。就是不分组寄存器没有特权模式,任意一种模式都可以使用未分组寄存器。

????2.分组寄存器R8——R12:

FIQ模式分组寄存器R8——R12.

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

????3.分组寄存器R13、R14:

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

寄存器R14用做子程序链接寄存器(Link Register LR),也称为LR,指向函数的返回地址。

????4.程序计数器:

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

????5.状态寄存器:

图1-3:

技术分享

图1-3

ARM所有工作模式下都可以访问程序状态寄存器CPSR。CPSR包含条件标志位、中断控制位、当前处理器模式以及其他状态和控制信息。CPSR在每种异常模式下都有一个对应的物理寄存器----程序状态保存寄存器SPSR。当异常发生的时候,SPSR用于保存CPSR的值,以便异常返回后恢复异常发生时的工作状态。

CPSR状态寄存器的示意图:图1-4:

技术分享

图1-4

?

?

?

?

?

?

图1-5:

技术分享

图1-5

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

ARM框架文档

技术分享

31个通用寄存器,6个状态寄存器(一个cpsr,5个spsr)。

技术分享

技术分享

通用31个寄存器,被分为了三类:R0~R7,R8~R14,PC程序计数器(R15)。

?

技术分享

R13常做堆栈指针的。

技术分享

R14保存调用子函数的返回地址,和中断的返回地址。

技术分享

用于程序计数器,pc指针。

cpsr:

技术分享

?

?

?

?

?

?

?

?

?

解释:

技术分享

技术分享

技术分享

?

技术分享

技术分享

技术分享

技术分享

技术分享

以上是关于8.ARM寄存器详细解说ARM寄存器的简单分类:图1-1:的主要内容,如果未能解决你的问题,请参考以下文章

使用 NEON/ARM 加载 8 位值

ARM 寄存器

ARM指令分类及其寻址方式

Cortex-A7 MPCore 架构详细介绍

ARM如何分配寄存器地址!

ARM的37个通用寄存器