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

相关推荐
振南的单片机世界7 小时前
HAL_Delay(1000)真准吗?SysTick的1ms基准从哪来
arm开发·stm32·单片机·嵌入式硬件
带土112 小时前
3. ARM寄存器组织
arm开发
xiangw@GZ1 天前
ARM TCM 紧耦合内存与 Cache 架构区别
arm开发·架构
XINVRY-FPGA1 天前
XCKU035-2FBVA676I AMD Xilinx Kintex UltraScale FPGA
arm开发·嵌入式硬件·网络安全·fpga开发·硬件工程·信号处理·fpga
少年、潜行2 天前
IAR FOR ARM 历史版本安装包、安装、注册流程【百度网盘资源】
arm开发·iar·iar历史版本·iar安装
Aaron15882 天前
无人机反制中AOA+TDOA联合定位技术与雷达探测定位技术的应用对比分析
arm开发·嵌入式硬件·fpga开发·硬件工程·无人机·信息与通信·信号处理
m0_747124532 天前
ARM架构基础知识扫盲
arm开发·架构
海绵宝宝de派小星2 天前
MCP与A2A协议深度解析:Agent时代的“TCP/IP“如何诞生
arm开发·网络协议·tcp/ip·ai
Zephyrus_20232 天前
LSM6DSV16X驱动移植+调试
c语言·arm开发
瑞禧生物tech3 天前
四臂聚乙二醇-磷脂 4-Arm PEG-DSPE 反应原理解析
arm开发