【ARM】ARM寄存器和异常处理
目录
1.指令的执行过程
2. ARM处理器概述
3.ARM指令集
4.ARM存储模型
5. ARM工作模式
6.ARM寄存器组织
(1)寄存器
(2) ARM寄存器
(3)CPSR寄存器
7. ARM异常处理
(1)异常
(2)异常源
(3)ARM异常模式
(4) ARM异常响应
(5)IRQ异常举例
(6) 异常优先级
(7) FIQ和IRQ
1.指令的执行过程
(1)一条指令的执行分为三个阶段
1.取址:
CPU将PC寄存器中的地址发送给内存,内存将其地址中对应的指令返回
到CPU中的指令寄存器(IR)
2.译码:
译码器对IR中的指令进行识别,将指令(机器码)解析成具体的运算
3.执行:
控制器控制运算器中对应的运算单元进行运算,运算结果写入寄存器
(2) 每执行一条指令后PC的值会自动增加指向下一条指令
2. ARM处理器概述
早先经典处理器 | 包括ARM7、ARM9、ARM11家族 |
Cortex-A系列 | 针对开放式操作系统的高性能处理器 应用于智能手机、数字电视、智能本等高端运用 |
Cortex-R系列 | 针对实时系统、满足实时性的控制需求 应于汽车制动系统、动力系统等 |
Cortex-M系列 | 为单片机驱动的系统提供了低成本优化方案 应用于传统的微控制器市场、智能传感器、汽车周边等 |
3.ARM指令集
(1)指令集: 处理器能识别的指令的集合称为指令集,不同架构的处理器指令集不同,指令集是处理器对开发者提供的接口
(2)大多数ARM处理器都支持两种指令集:
ARM指令集 | 所有指令(机器码)都占用32bit存储空间 代码灵活度高、简化了解码复杂度 执行ARM指令集时PC值每次自增4 |
Thumb指令集 | 所有指令(机器码)都占用16bit存储空间 代码密度高、节省存储空间 执行Thumb指令集时PC值每次自增2 |
4.ARM存储模型
(1)ARM采用32位架构,基本数据类型有以下三种
Byte(字节) | 8bits |
Halfword(半字) | 16bits |
Word(字) | 32bits |
(2)数据存储
Word型数据在内存的起始地址必须是4的整数倍
Halfword型数据在内存的起始地址必须是2的整数倍
注:即数据本身是多少位在内存存储时就应该多少位对齐,且ARM一般使用小端对齐
5. ARM工作模式
(1)ARM有8个基本的工作模式
User | 非特权模式,一般在执行上层的应用程序时ARM处于该模式 |
FIQ | 当一个高优先级中断产生后ARM将进入这种模式 |
IRQ | 当一个低优先级中断产生后ARM将进入这种模式 |
SVC | 当复位或执行软中断指令后ARM将进入这种模式 |
Abort | 当产生存取异常时ARM将进入这种模式 |
Undef | 当执行未定义的指令时ARM将进入这种模式 |
System | 使用和User模式相同寄存器集的特权模式 |
Monitor | 为了安全而扩展出的用于执行安全监控代码的模式 |
(2)工作模式的理解
不同模式拥有不同权限
不同模式执行不同代码
不同模式完成不同的功能
(3)ARM工作模式分类
按照权限 | User为非特权模式(权限较低),其余模式均为特权模式(权限较高) |
按照状态 | FIQ、IRQ、SVC、Abort、Undef属于异常模式,即当处理器遇到异常后 会进入对应的模式 |
6.ARM寄存器组织
(1)寄存器
概念 | 寄存器是处理器内部的存储器,没有地址 |
作用 | 一般用于暂时存放参与运算的数据和运算结果 |
分类 | 包括通用寄存器、专用寄存器、控制寄存器 |
(2) ARM寄存器
在某个特定模式下只能使用当前模式下的寄存器,一个模式下特有的寄存器其他模式下不可使用
R15(PC,Program Counter) | 程序计数器,用于存储当前取址指令的地址 |
R14(LR,Link Register) | 链接寄存器,一般有以下两种用途: > 执行跳转指令(BL/BLX)时,LR会自动保存跳转指令下一条指令的地址,程序需要返回时将LR的值复制到PC即可实现 > 产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下一条指令的地址,异常处理结束后将LR的值复制到PC可实现程序返回 |
R13(SP,Stack Pointer) | 栈指针,用于存储当前模式下的栈顶地址 |
CPSR(Current Program Status Register) | 当前程序状态寄存器 |
(3)CPSR寄存器
CPSR寄存器分为四个域,[31:24]为条件域用F表示、[23:16]为状态域用S表示、[15:8]为预留域用X表示、[8:0]为控制域用C表示
Bit[4:0] | [10000]User [10001]FIQ [10010]IRQ [10011]SVC [10111]Abort [11011]Undef [11111]System [10110]Monitor |
Bit[5] | [0]ARM状态 [1]Thumb状态 |
Bit[6] | [0]开启FIQ [1]禁止FIQ |
Bit[7] | [0]开启IRQ [1]禁止IRQ |
Bit[28] | > 当运算器中进行加法运算且产生符号位进位时该位自动置1,否则为0 > 当运算器中进行减法运算且产生符号位借位时该位自动置0,否则为1 |
Bit[29] | > 当运算器中进行加法运算且产生进位时该位自动置1,否则为0 > 当运算器中进行减法运算且产生借位时该位自动置0,否则为1 |
Bit[30] | 当运算器中产生了0的结果该位自动置1,否则为0 |
Bit[31] | 当运算器中产生了负数的结果该位自动置1,否则为0 |
7. ARM异常处理
(1)异常
处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生,这时处理器就要将当前的程序暂停下来转而去处理这个异常的事件,异常事件处理完成之后再返回到被异常打断的点继续执行程序
(2)异常源
导致异常产生的事件称为异常源
FIQ | 快速中断请求引脚有效 |
IRQ | 外部中断请求引脚有效 |
Reset | 复位电平有效 |
Software Interrupt | 执行swi指令 |
Data Abort | 数据终止 |
Prefetch Abort | 指令预取终止 |
Undefined Instruction | 遇到不能处理的指令 |
(3)ARM异常模式
异常模式:在ARM的基本工作模式中有5个属于异常模式,即ARM遇到异常后会切换成对应的异常模式
(4) ARM异常响应
ARM产生异常后的动作(自动完成)
1.拷贝CPSR中的内容到对应异常模式下的SPSR_<mode>
2.修改CPSR的值
2.1.修改中断禁止位禁止相应的中断
2.2.修改模式位进入相应的异常模式
2.3.修改状态位进入ARM状态
3.保存返回地址到对应异常模式下的LR_<mode>
4.设置PC为相应的异常向量(异常向量表对应的地址)
异常向量表
> 异常向量表的本质是内存中的一段代码
> 表中为每个异常源分配了四个字节的存储空间
> 遇到异常后处理器自动将PC修改为对应的地址
> 因为异常向量表空间有限一般我们不会再这里写异常处理程序,而是在对应的位置写一条跳 转指令使其跳转到指定的异常处理程序的入口
注:ARM的异常向量表的基地址默认在0x00地址但可以通过配置协处理器来修改其地址
ARM异常返回的动作(自己编写)
1.将SPSR_<mode>的值复制给CPSR, 使处理器恢复之前的状态
2.将LR_<mode>的值复制给PC ,使程序跳转回被打断的地址继续执行
(5)IRQ异常举例
(6) 异常优先级
(7) FIQ和IRQ
FIQ的响应速度比IRQ快
1. FIQ在异常向量表位于最末 ,可直接把异常处理写在异常向量表之后,省去跳转
2. FIQ模式有5个私有寄存器(R8-R12) ,执行中断处理程序前无需压栈保存寄存器,可直接处理中断
3. FIQ的优先级高于IRQ
3.1 两个中断同时发生时先响应FIQ
3.2 FIQ可以打断RIQ,但RIQ不能打断FIQ
相关文章:
【ARM】ARM寄存器和异常处理
目录 1.指令的执行过程 2. ARM处理器概述 3.ARM指令集 4.ARM存储模型 5. ARM工作模式 6.ARM寄存器组织 (1)寄存器 (2) ARM寄存器 (3)CPSR寄存器 7. ARM异常处理 (1&am…...
数仓建模【埋点设计与管理】
埋点设计与管理 埋点的作用 分析用户转化以及留存:分析用户偏好收集市场反馈保障用户数据安全定位异常其他作用 埋点数仓设计 数据进入数仓之前我们就需要设计好数仓表,埋点表的数据有几个特点: 数据量非常大,可能是所有数据集…...
Spring Clound介绍
Spring Cloud 是一系列框架的集合,它利用 Spring Boot 的开发便利性简化了分布式系统(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态)的开发。Spring Cloud 旨在为开发者…...
Redhat Linux忘记密码解决方案
1、重启系统 2、将光标移动到要启动的内核 3、按e编辑当前条目 4、将光标移动以Linux开头的行,此为内核命令行 5、在末尾添加人的rd.break 6、按ctrlx继续启动,如果发现输入的rd.break不能进入到伪系统,那么改为 rd.break consoletty0 (按ctr…...
对于子数组问题的动态规划
前言 先讲讲我对于这个问题的理解吧 当谈到解决子数组问题时,动态规划(DP)是一个强大的工具,它在处理各种算法挑战时发挥着重要作用。动态规划是一种思想,它通过将问题分解成更小的子问题并以一种递归的方式解决它们,然后利用这些…...
Instal IIS on Windows Server 2022 Datacenter
和以往版本一样,没有什么不同,So easy! WinR - ServerManager.exe 打开服务器管理器,点击【添加角色和功能】,选择自己想要的角色和功能。 一、开始之前:帮助说明,点击【下一步】;…...
飞天使-k8s知识点30-kubernetes安装1.28.0版本-使用containerd方式
文章目录 安装前准备containerd 配置内核参数优化安装nerdctl以上是所有机器全部安装开始安装初始化,这步骤容易出问题! 安装前准备 内核升级包的md5,本人已验证,只要是这个md5值,放心升级 1ea91ea41eedb35c5da12fe7030f4347 ke…...
Oracle 误操作insert delete update 数据回滚
查询回滚数据 select * from tablename AS OF TIMESTAMP TO_TIMESTAMP(2023-12-29 10:29:00,yyyy-mm-dd hh24:mi:ss) where not exists (select 1 from tablename A where A.xh tablename.xh and A.TIME tablename.TIME); TO_TIMESTAMP(2023-12-29 10:29:00,yyyy-mm-dd h…...
Linux系统(CentOS)下安装配置 Nginx 超详细图文教程
一、下载并安装 1.打开nginx官网并点击右侧的download,Nginx官网下载地址 2.选择稳定版本 我放在/usr/local/nginx/下,新建文件夹 mkdir /usr/local/nginx/ 通过xftp传输到Linux的服务器上,这里方法不过多复述。 或者如果Linux联网…...
追求完美用户体验,从变量名设计的细节抓起
在一个安静的办公室里,卧龙和凤雏正坐在电脑前忙碌地工作着。阳光透过窗户洒在他们的脸上,映照出专注的神情。 “变量命名让人摸不着头脑,光看变量名很难搞清楚它的用途。”卧龙眉头紧皱,表情严肃地说道。 “哦?具体是…...
matlab实现K均值聚类
在MATLAB中实现聚类分析,可以使用MATLAB内置的聚类函数,如kmeans(用于K均值聚类),linkage和cluster(用于层次聚类),或者使用MATLAB的统计和机器学习工具箱中的其他函数。 以下是一个…...
详解BOM编程
华子目录 BOM编程window对象常见的window对象的属性常见的window对象的方法注意 history对象history对象的属性history对象的方法 screen 对象navigator 对象属性方法 location对象属性方法示例 BOM编程 JavaScript本质是在浏览器中运行,所以JavaScript提供了BOM&a…...
情感分类学习笔记(1)
文本情感分类(二):深度学习模型 - 科学空间|Scientific Spaces 一、代码理解 cw lambda x: list(jieba.cut(x)) #定义分词函数 您给出的代码定义了一个使用 jieba 分词库的分词函数。jieba 是一个用于中文分词的 Python 库。该函数 cw 是…...
EtherCAT运动控制器Delta机械手应用
ZMC406硬件介绍 ZMC406是正运动推出的一款多轴高性能EtherCAT总线运动控制器,具有EtherCAT、EtherNET、RS232、CAN和U盘等通讯接口,ZMC系列运动控制器可应用于各种需要脱机或联机运行的场合。 ZMC406支持6轴运动控制,最多可扩展至32轴&#…...
物联网杀虫灯—新型的环保杀虫设备
型号推荐:云境天合TH-FD2S】物联网杀虫灯是一种新型环保杀虫设备,其中风吸式太阳能杀虫灯作为其一种特殊类型,展现了独特的工作原理和优势。 风吸式太阳能杀虫灯以太阳能电池板为电源,白天储存电源,晚上为杀虫灯提供电…...
加盟零食店的真是大冤种
关注卢松松,会经常给你分享一些我的经验和观点。 我一朋友,在老家县城去年失业没事干,手里有一点钱但不多,就想着自己干点啥 。最后经多方打听考察,加盟了一个零食店,前前后后花去了近五六十万,…...
力扣刷题--数组--第三天
今天再做两道二分查找的题目,关于二分查找的知识可看我前两篇博客。话不多说,直接开干! 题目1:69.x 的平方根 题目详情: 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数&#…...
开源即时通讯IM框架 MobileIMSDK v6.5 发布
一、更新内容简介 本次更新为次要版本更新,进行了bug修复和优化升级(更新历史详见:码云 Release Notes、Github Release Notes)。 MobileIMSDK 可能是市面上唯一同时支持 UDPTCPWebSocket 三种协议的同类开源IM框架。轻量级、高…...
React 第二十七章 Hook useMemo
useMemo 函数可以用于缓存计算结果,以避免不必要的重复计算。 在React的函数组件中,当组件重新渲染时,函数组件内的所有代码都会重新执行。有些计算可能是非常消耗资源的,例如进行复杂的计算或进行网络请求。如果这些计算的结果在…...
自己写的爬虫小案例
网址:aHR0cDovL2pzc2NqZ3B0Lmp4d3JkLmdvdi5jbi8/dXJsPS92aWV3L3dvcmtpbmdVbml0L3dvcmtpbmdVbml0Lmh0bWw 这串代码能够爬取勘察单位企业的详细信息。 import requests import time import csv f open(勘察单位公司信息.csv,w,encodingutf-8,newline) csv_writer …...
Kafka 环境搭建和使用之单机模式详细教程
上一篇:Kakfa 简介及相关组件介绍 下一篇:Kafka 环境搭建之伪分布式集群详细教程 Kafka 环境搭建 Kafka的环境搭建可以根据不同的需求和场景采取不同的模式,主要包括以下几种: 单机模式(Standalone Mode): 在这种模式下,Kafka、Zookeeper 以及生产者和消费者都在同一…...
Xamarin.Android项目使用ConstraintLayout约束布局
Xamarin.AndroidX.ConstraintLayout Xamarin.Android.Support.Constraint.Layout Xamarin.AndroidX.ConstraintLayout.Solver Xamarin.AndroidX.DataBinding.ViewBinding Xamarin.AndroidX.Legacy.Support.Core.UI Xamarin.AndroidX.Lifecycle.LiveData ![在这里插入图片描述]…...
探索Java 18:未来技术趋势与革新之路
Java,作为一门历史悠久而又历久弥新的编程语言,始终站在技术发展的前沿,引领着软件开发的潮流。随着Java 18的发布,我们再次见证了这门语言的自我迭代与革新。本文将深入探讨Java 18带来的新特性、技术趋势,以及它如何…...
毕业论文怎么写? 推荐4个AI工具
写作这件事一直让我们从小学时期就开始头痛,初高中时期800字的作文让我们焦头烂额,一篇作文里用尽了口水话,拼拼凑凑才勉强完成。 大学时期以为可以轻松顺利毕业,结果毕业前的最后一道坎拦住我们的是毕业论文,这玩意不…...
JVM认识之垃圾收集算法
一、标记-清除算法 1、定义 标记-清除算法是最基础的垃圾收集算法。它分为标记和清除两个阶段。先标记出所有需要回收的对象(即垃圾),在标记完成后再统一回收所有垃圾对象。 2、优点和缺点 优点:实现简单缺点: 可能…...
docker-compose部署gitlab
需要提前安装docker和docker-compose环境 参考:部署docker-ce_安装部署docker-ce-CSDN博客 参考:docker-compose部署_docker compose部署本地tar-CSDN博客 创建gitlab的数据存放目录 mkdir /opt/gitlab && cd mkdir /opt/gitlab mkdir {conf…...
Colab/PyTorch - 001 PyTorch Basics
Colab/PyTorch - 001 PyTorch Basics 1. 源由2. PyTorch库概览3. 处理过程2.1 数据加载与处理2.2 构建神经网络2.3 模型推断2.4 兼容性 3. 张量介绍3.1 构建张量3.2 访问张量元素3.3 张量元素类型3.4 张量转换(NumPy Array)3.5 张量运算3.6 CPU v/s GPU …...
翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习三
合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…...
基于Seata实现分布式事务实现
Seata 是一个开源的分布式事务解决方案,它提供了高性能和简单易用的分布式事务服务。Seata 将事务的参与者分为 TC(Transaction Coordinator)、TM(Transaction Manager)和 RM(Resource Manager)…...
adss光缆是什么意思
adss光缆,adss光缆型号,adss光缆用途 什么是adss光缆 ADSS用于高压输电线路并利用电力系统输电塔干,整个光缆为非金属介质,自承悬挂于电力铁塔上的电力强度最小的位置。它运用于已建高压输电线路,具有安全性高&#…...
恩施市住房和城乡建设局网站/seo工具软件
闭包的优点,延长或扩大了变量的使用范围,延长了变量的使用时间,2.避免了变量命名的冲突 缺点:如果乱用闭包,会造成空间的浪费 创建person新实列:1创建一个新对象 2.将构造函数的作用域赋给新对象࿰…...
如何做网站咨询/免费b站推广网站短视频
目录:python学习目录 开发环境:vs 2019os.access(para1, para2) 用来判断para1路径有什么权限 para1:文件路径 para2:有以下四个值 os.F_OK:测试para1路径是否存在 os.R_OK:测试para1路径是否允许读 os.W_O…...
大地在线影视免费观看/整站优化方案
1. JSON 概述 JSON(JavaScript Object Notation, JS 对象标记)是一种轻量级的数据交换格式,简洁和清晰的层次结构使得JSON成为理想的数据交换语言。 JSON 支持的数据格式: 对象(字典):花括号…...
西安制作公司网站的公司/中国万网域名注册官网
最近一直在找前端工作,前前后后面了几家公司,虽然不太顺利,但是收获还是有的,就过程中遇到的面试题总结一下 CSS1:标准盒模型/IE盒模型2:自适应三栏布局3:移动端自适应方案4:FLEX布局…...
深圳网站建设招标/色盲测试图数字
从centos7版本开始,为了保持更好的开源度,系统最小化版本的默认数据库变为mariadb,但为了实验需要,决定还是安装mysql(毕竟两者的存储引擎是有区别的,尽管mariadb能很好的兼容mysql),下面介绍如何安装。首先…...
独立站有哪些常见平台/惠州seo外包公司
题目如下 l(编程题)信用卡号验证 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程…...