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代表不同的状态,比如比较两个数值大小等

相关推荐
时空自由民.1 小时前
蓝牙协议栈知识和网络协议栈知识对比
网络·arm开发·网络协议
QAQ小菜鸟6 小时前
五、keil添加AC5
arm开发
花无缺就是我8 小时前
内网穿透哪个好,之神卓互联Linux版Arm安装教程2026最新
linux·运维·arm开发
以梦为马无处可栖8 小时前
AxVisor 深度学习笔记-ARM 虚拟化硬件原理
arm开发·笔记·深度学习
CinzWS8 小时前
UVM验证环境构建:CPU验证的方法论——从零构建ARM A53验证帝国的艺术
arm开发·架构·芯片验证·原型验证·a53
若风的雨10 小时前
【DeepSeek】Ramdisk 目录内容与功能说明
arm开发
CinzWS1 天前
A53多核协同(上):核间通信与缓存一致性协议——ARM多核的“心灵感应“
arm开发·嵌入式·芯片验证·原型验证·a53
CinzWS1 天前
A53多核协同(下):一致性内存模型与内存屏障——ARM多核的“时间魔法“
arm开发·嵌入式·原型验证·a53
EnglishJun1 天前
ARM嵌入式学习(二十四)--- 库移植(移植到开发板)
arm开发·学习
AI服务老曹2 天前
异构计算时代的安防底座:基于 Docker 的 X86/ARM 双模部署与 NPU 资源池化实战
arm开发·docker·容器