ARM内部寄存器

一、介绍

CPU内部的寄存器是超高速、容量极小的临时存储单元,专用于存放当前正在执行的指令和运算数据。CPU 访问内部的寄存器时,不需要寻址,直接进行访问。CPU 计算的时候,在某个内存将变量读进来,做运算,再写回去,读进来和做运算的操作,实际上是将变量的值,读到CPU 内部的寄存器里面进行保存和运算。

二、CPU 的寄存器

2.1.R0 ~ R15

如下图所示,ALU 是逻辑运算单元,R0 ~ R15 是 CPU 内部的寄存器,R0 ~ R12 这 13 个寄存器是通用的寄存器,另外 3 个寄存器有别的用途:

  • R13:SP(Stack Pointer),栈指针,永远指着栈这个储物区最顶上的那个位置,该指针有两个实体:SP_process 和 SP_main,一般使用 SP_main,运行 RTOS 时使用 SP_process
  • R14:LR(Link Register),用来保存返回地址的寄存器
  • R15:PC(Program Counter),程序计数器,表示当前指令地址,写入新址即可跳转

下面展开说明一下 R15:R15(PC)里面存放着 CPU 接下来要执行的那条指令在内存中的地址

  • 取指令:CPU根据 R15 里记录的地址,从内存中取出对应的指令
  • 执行指令:CPU执行这条指令
  • 自动更新:执行完后,R15里的地址会自动增加,指向下一条指令的地址。这样,程序就能一条接一条地顺序执行下去
  • 跳转:当遇到条件判断、循环或者函数调用时,执行跳转指令会直接改变 R15 里的地址,让 CPU 跳到新的地方去执行,从而实现复杂的程序逻辑

在这里插入图片描述

2.2.程序状态寄存器(M3 / M4)

CPU 内部除了 16 个寄存器之外,还有一个程序状态寄存器(PSR),简单来说,PSR(程序状态寄存器)是 CPU 的“状态仪表盘”,它用一个寄存器记录了 CPU 刚刚执行完操作后的各种关键状态。例如,有两个数进行比较,比较的结果就存放在 PSR 里面。

在这里插入图片描述

xPSR 的 x 是一个可修改的值,实际上对应 3 个寄存器:

  • APSR:Application PSR,应用 PSR
  • IPSR:Interrupt PSR,中断 PSR
  • EPSR:Exectution PSR,执行 PSR

下面表格是 xPSR ,32 个位里,三个寄存器相应的功能位相互错开。对于访问这三个寄存器,可以单独访问:

  • MRS R0, APSR ;读 APSR
  • MRS R0, IPSR ;读 IPSR
  • MSR APSR, R0 ;写 APSR

也可以一次性访问:

  • MRS R0, PSR ;读组合程序状态
  • MSR PSR, R0 ;写组合程序状态
    在这里插入图片描述
    在这里插入图片描述

2.3.程序状态寄存器(A7)

A7 内核的程序状态寄存器成为当前程序状态寄存器,它里面的内容和 M3 / M4 内核的大差不差

在这里插入图片描述

下图是 A7 的程序状态寄存器:

在这里插入图片描述

为了提高效率,A7 内核的 CPU 有多种工作模式,有用户模式、系统模式、快中断模式、中断模式等等,例如,在快中断模式下,它有自己专用的寄存器 R8 ~ R14, 这样不会影响到其他寄存器的工作,同时又可以处理中断,这样就可以提高中断的效率。

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值