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

相关推荐
猫猫的小茶馆6 小时前
【ARM】ARM的介绍
c语言·开发语言·arm开发·stm32·单片机·嵌入式硬件·物联网
森G9 小时前
五、Linux字符设备驱动
linux·arm开发·c++·ubuntu
贝塔实验室9 小时前
新手如何使用Altium Designer创建第一张原理图(三)
arm开发·单片机·嵌入式硬件·fpga开发·射频工程·基带工程·嵌入式实时数据库
小尧嵌入式10 小时前
QT软件开发知识点流程及图片转换工具的开发
开发语言·arm开发·qt
贝塔实验室11 小时前
Altium Designer全局编辑
arm开发·经验分享·笔记·fpga开发·dsp开发·射频工程·基带工程
dian2008-ic11 小时前
Linux pcie【9】基于GIC-V3 ITS实现pcie msi中断
linux·arm开发·驱动开发·嵌入式硬件
大大菜鸟一枚14 小时前
ARM交叉编译环境配置与Qt依赖库部署指南
开发语言·arm开发·qt
CinzWS15 小时前
TrustZone-M的设计哲学
arm开发·arm·architecture
macken999915 小时前
centos7arm版本镜像下载存档
arm开发·x86_64开发
贝塔实验室1 天前
新手如何使用Altium Designer创建第一张原理图(二)
arm开发·fpga开发·硬件工程·dsp开发·射频工程·基带工程·嵌入式实时数据库