IMX6ULL裸机-ARM内部寄存器

上一篇文章说CPU读取内存的数据在内部进行计算,那么读取到的数据会暂存到CPU内部的寄存器中,内部有R0-R15寄存器,可以用来暂存数据

ARM寄存器介绍

这里指的是内核寄存器,其中R0-R12是通用的寄存器,可以用这13个寄存器来保存其他值,这些值可以来自内存也可以来自其他寄存器,另外3个有特殊用途

比如下图的指令,第一条就是内存a的数值加载到寄存器R0中

对于A7架构的CPU来说,有很多工作模式,就是图中最下面的,对于不同的模式,它会只用不同的寄存器。浅色字体是与 User 模式所共有的寄存器,浅蓝色背景是各个模式所独有 的寄存器,即在所有的模式中,低寄存器组(R0~R7)是共享同一组物理寄存器的, 只是一些高寄存器组在不同的模式有自己独有的寄存器,比如 FIQ 模式下 R8~R14 是独立的物理寄存器。如果某个程序处于 FIQ 模式下访问寄存器 R13(SP),那它实际访问的是他自己寄存器 SP_fiq,并不是R13(SP)

运行模式可以通过软件进行任意切换,也可以通过中断或者异常来进行切换。 大多数的程序都运行在用户模式,用户模式下是不能访问系统所有资源的,有些 资源是受限的,要想访问这些受限的资源就必须进行模式切换。但是用户模式是不能直接进行切换的,用户模式下需要借助异常来完成模式切换,当要切换模式 的时候,应用程序可以产生异常,在异常的处理过程中完成处理器模式切换。 所谓"运行模式",可以这样简单理解: ① 板子上电时,CPU处于SVC模式,它用的是SVC模式下的寄存器 ② 程序运行时发生了中断,CPU进入IRQ模式,它用的IRQ模式下的寄存器 ③ CPU处理完中断,它切换回SVC模式,继续使用SVC模式下的寄存器 ④ CPU发生某种异常时,比如读取内存出错,它会进入ABT模式,使用ABT 模式下的寄存器来处理错误。 在某种模式下,CPU执行时使用的是这种模式的资源,比如使用的是这组模

上图可以看到还有xPSR(代指多个),这是程序状态寄存器用来保存某些状态,这些寄存器由多个bits组成,不同的bit位置1代表不同的状态,比如比较两个数值大小等

相关推荐
_kerneler6 小时前
arm虚拟机实时性优化总结
arm开发
口袋里のInit6 小时前
基础知识——ARM M核入栈出栈流程
开发语言·arm开发
2035去旅行1 天前
WIFI传输带宽
arm开发·嵌入式硬件
陌上花开缓缓归以1 天前
nand flash 驱动适配
arm开发
振南的单片机世界1 天前
影子寄存器:改ARR下个周期才生效,波形不突变
arm开发·stm32·单片机·嵌入式硬件
陌上花开缓缓归以2 天前
基于 W25N01KV 的 MTD/BBT/BMT/UBI 框架与坏块导致系统挂死问题剖析
arm开发
szxinmai主板定制专家2 天前
基于ZYNQ MPSOC图像采集与压缩系统总体设计方案
linux·arm开发·人工智能·嵌入式硬件·fpga开发
底层开发智库2 天前
学习ARM新姿势,理论实践的结合
arm开发
szxinmai主板定制专家3 天前
基于ZYNQ MPSOC ARM+FPGA的超高清实时图像采集与压缩系统设计
linux·运维·服务器·arm开发·人工智能·嵌入式硬件·fpga开发
加油20193 天前
嵌入式软件技术栈和学习路线详解
linux·arm开发·数据结构·mqtt·设计模式·嵌入式