ARM中的寄存器

news2024/9/29 1:18:43

ARM工作模式

  • ARM有8个基本的工作模式
    • User 非特权模式,一般在执行上层的应用程序时ARM处于该模式
    • FIQ 当一个高优先级中断产生后ARM将进入这种模式
    • IRQ 当一个低优先级中断产生后ARM将进入这种模式
    • SVC 当复位或执行软中断指令后ARM将进入这种模式
    • Abort 当产生存取异常时ARM将进入这种模式
    • Undef 当执行未定义的指令时ARM将进入这种模式
    • System 使用和User模式相同寄存器集的特权模式
    • Monitor 为了安全而扩展出的用于执行安全监控代码的模式
注意:
1.每个模式的优先升级是不同的,例如当处于IRQ模式下时 FIQ中断可以打断 IRQ模式切换到FIQ模式下
2.启动阶段处于SVC模式
3.在keil调试中,我们可以手动的从user模式切换到SVC模式,但是不弄从SVC切换到user模式
4.FIQ、IRQ、SVC、Abort、Undef属于异常模式,即当处理器遇到异常后会进入对应的模式
5.不同模式下有不同的权限,执行不同的工作

ARM寄存器

  • ARM寄存器为R0 R1 R2 … R15 (cpsr spsr)寄存器是处理器的内存存储器,没有地址
    CPU可以直接操作通用寄存器,如:
MOV R1,#1
MOV R2,#2
ADD R2,R1,R2

注:SOC上的外设也是有寄存器的,但是外设的寄存器,是通过内存映射表,映射到内存地址的,他是有地址的

  • ARM寄存器作用:暂时的存储数据和运算结果
  • ARM寄存器分类:通用寄存器、专用寄存器、控制寄存器
    在这里插入图片描述
    上图可以看出ARM一共有40个寄存器,带三角符号的是特定模式下的存取器
    • 在某个特定模式下只能使用当前模式下的寄存器,一个模式下特有的寄存器其他模式下不可使用

举例:

user模式下的r0 ~ r7  在FIQ模式下同样可以使用 而FIQ模式下的r8_fiq ~ r14_fiq只有在FIQ模式下可以
使用,以及SPSP_fiq也只有FIQ模式下可以使用

同理 看下IRQ模式 user模式下的r0 ~ r12  在IRQ模式下同样可以使用  而IRQ模式特有的r13_irq
r14_irq 和spsr_irq只有该模式下可以使用

为什么一共有40个寄存器
在这里插入图片描述

红 17 + 黄 8 + 3 + 3 + 3 + 3 + 3 = 40

为社么要保留r0~r7每个模式下都可以公用?

用于在不同模式之间传输数据

专用寄存器

r15——PC指针

r15就是我们常说的PC指针

  • 程序计数器,用于存储当前取址指令的地址

r14 ——LR

  • 用于存放下一条指定地址
    当我们使用bl指令或产生异常时,跳转前将bl指令的下一条指令的地址存到lr中当其返回时
    把LR中存储的地址给PC
MOV CP,LR

r13——sp

  • 栈指针,指向栈顶
  • 使用前需要将栈初始化,如将SP指向可用的ddr空间

CPSR寄存器(Current Program Status Register)

当前程序状态寄存器
在这里插入图片描述
在这里插入图片描述
Bit[4:0] 表示程序目前处于什么状态
Bit[5] 指令集 一般都为ARM状态

  • Bit[6] Bit[7] 分析 它代表这FIQ和IRQ禁止和使能,在不同模式下其状态是不一样的
  • 例如在USER模式下 来了一个IRQ中断 程序切换为IRQ模式 同时IRQ状态改为禁止 表示不会处理其他的IRQ中断 但是FIQ的状态会是开启,当有新的FIQ中断时 会从IRQ切换到FIQ模式 因为FIQ具有更高的优先级
  • 同理 在FIQ模式下 新的IRQ和FIQ中断不打断当前的FIQ中断 除非有更高优先级的中断

在这里插入图片描述
用于加减计算
ARM寄存器为32位,按理说只能进行32位以内的运算,但实际ARM运用了将大数换成小数,然后利用进位的方法来计算大数的加减例如

0x1000000002           0x1        0x00000002 
+                 =>    +             +
0x3000000004           0x3        0x00000004
					   0x4        0x00000006 =>  0x400000006

但是这样也会有新的问题 那就是进位

0x1ffffffff            0x1        0xffffffff
+                 =>    +             +
0x3000000001           0x3        0x00000001
					   0x4        0x00000000 =>  0x400000000 这个结果显然不对
					   此事就需要bit[29] 位
					           当运算器中进行加法运算且产生进位时该位自动置1,否则为0
					   当加法运算 bit[29] 位为1时 需要进位因此还需要加1+
					   0x1
					   0x5        0x00000000 =>  0x500000000

减法同理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/375513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 红帽9.0 本地源 与 网络源 搭建

本次我们使用的是 redhat 9.0 版本,是redhat 的最新版本,我们一起来对其进行 本地仓库 和 网络仓库的搭建部署~!!关于 本地仓库( 本地源 ),和 网络仓库 ( 网络源 )&#…

【项目实战】从0开始入门JDK源码 - LinkedList源码

一、源码位置 一般来说IDEA配置好JDK以后 ,JDK的源码其实也配置好了,本文是基于JDK1.8的源码说明 rt - java - util - LinkedList 二、 继承关系图 LinkedList public class LinkedList<E>extends AbstractSequentialList<E>implements

【计算机网络基础】

计算机网络基础网络的基本概念网络互联网IP地址MAC地址网络协议网络分层模型网络应用程序的通信流程网络的基本概念 网络 网络是由若干结点和链接这些结点的链路组成&#xff0c;网络中的结点可以是计算机&#xff0c;交换机&#xff0c;路由器等设备 网络设备&#xff1a;交…

绕过检测之Executor内存马浅析(内存马系列篇五)

写在前面 前面已经从代码层面讲解了Tomcat的架构&#xff0c;这是内存马系列文章的第五篇&#xff0c;带来的是Tomcat Executor类型的内存马实现。有了前面第四篇中的了解&#xff0c;才能更好的看懂内存马的构造。 前置 什么是Executor Executor是一种可以在Tomcat组件之间…

FastDDS-0.简介

FastDDS简介 eProsima Fast DDS 是 DDS (Data Distribution Service) 协议的一个C语言实现版本&#xff0c;该协议由 Object Management Group (OMG) 组织定义。 eProsima Fast DDS 库既提供了一个应用编程接口&#xff08;API&#xff09;&#xff0c;又提供了一种通信协议&a…

Qt——自定义Model

众所周知&#xff0c;Qt提供了一套Model/View框架供开发者使用&#xff0c;Model用来提供数据&#xff0c; View则用来提供视觉层的显示。实际上这是一套遵循MVC设计模式的GUI框架&#xff0c;因为Qt还提供了默认的Delegate作为Controller来作为控制器。 MVC的好处这里就不多说…

关于Ubuntu18.04 root账户登录的问题

关于Ubuntu18.04 root账户登录的问题一、 Ubuntu 18.04添加root用户登录1. 设置root用户2. 修改/root/.profile3. 修改/etc/pam.d目录下的gdm-autologin和gdm-password4. 修改50-ubuntu.conf5. 登录root账户二、Ubuntu18.04不能远程使用root账户登录的问题1. 修改sshd_config2.…

叠氮试剂79598-53-1,6-Azidohexanoic Acid,6-叠氮基己酸,末端羧酸可与伯胺基反应

●中文名&#xff1a;6-叠氮基己酸●英文名&#xff1a;6-Azidohexanoic Acid&#xff0c;6-Azidohexanoic COOH●外观以及性质&#xff1a;西安凯新生物科技有限公司供应的6-Azidohexanoic Acid浅黄色或者无色油状&#xff0c;叠氮化物可使用铜催化的Click化学与末端炔烃共轭&…

【深度探讨】如何利用区块链改善公共服务

发表时间&#xff1a;2022年5月4日 信息来源&#xff1a;bsvblockchain.org BSV区块链协会全力支持符合企业和政府对于节能降耗和合法合规等相关要求的区块链生态系统。 然而&#xff0c;虽然监管机构负责其监管范围内的技术服务的性质、目的和影响&#xff0c;但他们并不是全…

金三银四了,只能每天整理一下软件测试面试题给大家多多学习了,祝大家金三银四升职加薪,奥利给!

最近有童鞋和我抱怨&#xff0c;说网上很难搜到那些全面又合适的自动化测试面试题&#xff0c;这里根据我个人的经验以及收集整理的&#xff1a; 我还在文章最后面准备了一套视频&#xff0c;是关于简历和面试题方面的&#xff0c;真心建议现在在准备面试的兄弟去看看&#xf…

YB菜菜的毫米波雷达自学之路(四)——浅谈角度模糊

YB菜菜的毫米波雷达自学之路&#xff08;四&#xff09;——浅谈角度模糊前提说明主要内容&#xff1a;1. 一维平面天线阵列模糊函数及相关阐述1.1角度模糊函数定义1.2角度模糊函数案例与分析1.2.1 雷达阵列信息1.2.2 基础参数分析1.2.3 模糊函数图与波束方向图的关系探索与疑问…

华为OD机试模拟题 用 C++ 实现 - 简易压缩算法(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明简易压缩算法题目输入输出示例一输入输出说明示例二输入输出说明示例三输入输出说明

②【Java 组】蓝桥杯省赛真题解析 [振兴中华] [三部排序] 持续更新中...

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 蓝桥杯真题--持续更新中...一、振兴中华二、三…

【无标题】(2019)NOC编程猫创新编程复赛小学组真题含参考

&#xff08;2019&#xff09;NOC编程猫创新编程复赛小学组最后6道大题。前10道是选择填空题 略。 这道题是绘图题&#xff0c;没什么难度&#xff0c;大家绘制这2个正十边形要注意&#xff1a;一是不要超出舞台&#xff1b;二是这2个正十边形不要相交。 这里就不给出具体程序了…

RPC异步化原理

深入RPC&#xff0c;更好使用RPC&#xff0c;须从RPC框架整体性能考虑问题。得知道如何提升RPC框架的性能、稳定性、安全性、吞吐量及如何在分布式下快速定位问题。RPC框架如何压榨单机吞吐量&#xff1f; 1 前言 TPS一直上不去&#xff0c;压测时CPU压到40%&#xff5e;50%就…

Windows离线安装rust

目前rust安装常用的方式就是通过Rustup安装&#xff0c;此安装方式需要访问互联网。在生产环境中由于网络限制&#xff0c;不能直接访问互联网或者不能访问目标网站&#xff0c;这时候需要用离线安装的方式&#xff0c;本文将详细介绍离线安装步骤&#xff0c;并给出了vscode如…

记一次java.lang.ClassNotFoundException问题排查过程

记一次java.lang.ClassNotFoundException问题排查过程 同事提供一个or-simulation-engine.jar包&#xff08;非maven项目&#xff0c;内部依赖很多其他jar&#xff0c;这个包是手动打出来的&#xff09;给我&#xff0c;我集成到我的springboot项目中&#xff0c;在本地IDEA启…

网上招聘系统

技术&#xff1a;Java、JSP等摘要&#xff1a;当今&#xff0c;人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等…

C#多窗口切换

多窗口切换【功能目标】1、实现多窗口切换&#xff08;Panel&#xff09;2、动态生成窗口内文本框以及标签&#xff08;重点&#xff09;3、改变文本框内容【效果图】【代码详解】1、多窗口切换如要实现多窗口切换&#xff0c;需要用到Panel&#xff0c;对于这个控件不熟悉的可…

正演(1): 二维声波正演模拟程序(中心差分)Python实现

目录 1、原理&#xff1a; 1&#xff09;二维声波波动方程: ​编辑 2&#xff09;收敛条件&#xff08;不是很明白&#xff09; 3&#xff09;雷克子波 4&#xff09;二维空间衰减函数 5&#xff09;边界吸收条件 (不是很明白。。) 2、编程实现 1&#xff09;参数设置&…