ARM寄存器

前言

arm学习笔记


提示:仅供参考

一、ARM架构简介

ARM架构过去称作进阶精简指令集机器,是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。

二、ARM 寄存器组介绍

ARM 处理器一般共有 37 个寄存器,其中包括:
1) 31 个通用寄存器,包括 PC(程序计数器)在内,都是 32 位的寄存器。
2) 6 个状态寄存器,都是 32 位的寄存器。

ARM 处理器共有 7 种不同的处理器模式:
(1)USR(10000):正常用户模式,程序正常执行模式。
(2)FIQ(10001):快速中断模式,以处理快速情况,支持高速数据传输或通道处理。
(3)IRQ(10010):外部中断模式,普通中断处理
(4)SVC(10011):操作系统保护模式(管理模式),即操作系统使用的特权模式(内核),处理软件中断swi reset
(5)abt(10111):数据访问中止模式,用于 虚拟存储器 和 存储器 保护
(6)und(11011):未定义指令终止模式,用于支持通过软件仿真硬件的协处理器
(7)sys(11111):系统模式,用于运行特权级的操作系统任务( armv4 以上版本才具有)
在这里插入图片描述
在每一种处理器模式中有一组相应的寄存器。在任意一种处理器模式下,可见的寄存器包括 15 个通用寄存器(R0~R14)、一个或者二个状态寄存器以及程序计数器(PC)。

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

r0~r3 主要用于子程序间传递参数
r4~r11 主要用于保存局部变量,但在 Thumb 程序中,通常只能使用 r4~r7 来保存局部变量
r12 用作子程序间scratch 寄存器,即 ip 寄存器
r13 通常用做栈指针,即 sp
r14 寄存器又被称为连接寄存器(lr),用于保存子程序以及中断的返回地址
r15 用作程序计数器(pc),由于 ARM 采用了流水线机制,当正确读取了 PC 的值后,该值为当前指令地址加 8 个字节,即 PC 指向当前指令的下两条指令地址。

CPSR和SPSR都是程序状态寄存器,其中SPSR是用来保存中断前的CPSR中的值,以便在中断返回之后恢复处理器程序状态。
在这里插入图片描述
不分组寄存器(r0~r7
在所有的运行模式下都使用同一个物理寄存器,它们未被系统用作特殊的用途。

分组寄存器(r8~r14
a)对于r8~r12, 当使用FIQ(快速中断模式)时访问寄存器r8_fiq-r12_fiq,当使用除FIQ模式以外的其他模式时,访问寄存器r8-r12
b)对于r13,r14来说,每个寄存器对应6个不同的物理寄存器,其中一个是用户模式与系统模式共用(图中的r13r14),另外5个物理寄存器对应其他5种不同的运行模式,并采用以下记号来区分不同的物理寄存器分别为fiq,irq,svc,abt,und.(如上图)

r13在ARM指令中常用作堆栈指针SP
特别注意:由于每一种模式都有自己的r13,所以我们在自己初始化的时候一般都要初始化每种模式下的r13,使其指向该运行模式的栈空间。

r14称为子程序链接寄存器LR(Link Register)
有两个特殊功能,一种是每一种模式下都可以用于保存函数的返回地址,另外就是异常处理后的返回地址,如中断。

PC指针(r15
R15用作程序计数器(PC)对应一个物理寄存器,由于ARM体系结构采用了多级流水线技术(不了解多级流水线的可以访问这个博客http://blog.csdn.net/abclixu123/article/details/7471822,博主讲的不错),对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节程序状态寄存器。

CPSR
在这里插入图片描述
下面介绍其中几个比较重要的位,其他位,大家可以参考官方手册:

N: 当两个表示的有符号整数运算时,1表示运算结果为负数,0表示结果为正或零。

Z:1表示运算的结果为零,0表示运算的结果不为零。对于CMP指令,1表示进行比较的两个数大小相等。

C:下面分四种情况讨论C的设置方法:
a) 加法运算(包括比较指令CMN):当运算产生了进位时(无符号数溢出),C=1,否则C=0。
b) 减法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,否则C=1。
c) 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。
d) 对于其他的非加/减运算指令,C的值通常不改变。

V:下面分两种情况讨论V的设置方法
a) 对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。
b) 对于其他的非加/减运算指令,C的值通常不改变。

I:1 表示禁止外部(硬件)中断(IRQ)

F:1 表示禁止快速中断(FIQ)

T:1表示为thumb状态0为arm状态

M[4:0]:用来设置处理器的工作模式具体数据见本文开始的介绍。

SPSR
SPSR 除usr、sys外,对应用于异常保护的CPSR的备份,异常时,保存CPSR值,异常退出时,将该值恢复到CPSR,以保证程序的正常运行,每一中异常运行模式(除usr和sys)有各自的物理寄存器。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值