arm的状态寄存器

目录

  • 一、arm 的 PSRs
  • 二、CPSR
    • 2.1 CPSR_cxsf
  • 三、SPSR
  • 四、APSR

一、arm 的 PSRs

arm 中有很多程序状态寄存器(Program Status Registers,PSRs)用于存储处理器的状态信息,包括 CPSR\SPSR\FPSR\APSR 等:

  • CPSR(Current Program Status Register):当前程序状态寄存器,用于存储当前程序的状态信息,包括处理器模式、条件码、中断使能状态等。
  • SPSR(Saved Program Status Register):保存程序状态寄存器,用于保存异常处理程序执行前的状态,以确保异常处理程序执行完毕后能够正确地返回到原来的程序状态。每个异常模式都有对应的 SPSR。
  • APSR(Application Program Status Register):应用程序状态寄存器,用于存储特定于应用程序的状态信息。在 ARMv7-M 架构中,APSR 包含了条件码和标志位。

arm core寄存器

二、CPSR

The Current Program Status Register (CPSR),当前程序状态寄存器,寄存器格式如下:
CPSR寄存器
存储了以下处理器状态和控制信息:

  • APSR(N Z C V Q GE),存储特定于应用程序的状态信息,在下面 APSR 中详细介绍;
  • 程序指令集信息,bit24 J 和 bit5 T 的不同组合,区分 ARM\Thumb\Jazelle\ThumbEE 不同的指令集;
  • IT 保存了 Thumb 的 IT 指令的 If-Then 执行状态;
  • E 保存了大小端信息;
  • M 保存了 ARM 的处理器模式(usr\fiq\irq\svc\mon\abt\hyp\und\sys);
  • A I F (Abort\IRQ\FIQ)是中断和异常的使能 bit 位;

2.1 CPSR_cxsf

为了防止在某些操作 CPSR 寄存器的场景中,误操作其它 bit 位,CPSR(PSRs,其它状态寄存器也都具备这个功能)有 c x s f 几个不同的字段指代不同的 bit 位。

  • c:control 字段,PSR[7:0] bit 位;
  • x:extension 字段,PSR[15:8] bit 位;
  • s:status 字段,PSR[23:16] bit 位;
  • f:flag 字段,PSR[31:24] bit 位;

cxsf 字段可以任意单个或多个组合,例如 CPSR_c 指代只操作 CPSR 的低 8bit 位、CPSR_xs 指代只操作 CPSR 的[23:8] bit 位。

三、SPSR

The Saved Program Status Registers (SPSRs),程序状态保存寄存器,每个异常模式都有对应的 SPSR,是各个异常模式下 CPSR 的拷贝。

  • 当进入某个异常,CPSR 会被拷贝到这个异常状态下的 SPSR 中;
  • 当异常处理完成后,为了恢复导致回去的程序状态,将 SPSR restore 到 CPSR;

总的来说,CPSR 用于存储当前程序的状态,而 SPSR 则用于保存异常处理程序执行前的状态,以确保异常处理程序执行完毕后能够正确地返回到原来的程序状态。SPSR 在异常处理过程中起到了保护和恢复程序状态的作用。

四、APSR

The Application Program Status Register (APSR),在 ARMv7-A,是 application level view 下的 CPSR,包含以下 bit 位:
APSR寄存器

  • N(Negative):该位表示最近一条指令的运算结果是否为负数。当运算结果为负数时,N 位被设置为 1;否则,N 位被清零。
  • Z(Zero):该位表示最近一条指令的运算结果是否为零。当运算结果为零时,Z 位被设置为 1;否则,Z 位被清零。
  • C(Carry):该位用于处理无符号数运算中的进位。当运算产生了进位时,C 位被设置为 1;否则,C 位被清零。
  • V(Overflow):该位用于处理带符号数运算中的溢出。当运算结果超出了有符号数的表示范围时,V 位被设置为 1;否则,V 位被清零。
  • Q(Sticky Overflow):该位用于处理 SIMD(Single Instruction, Multiple Data)指令中的溢出情况。Q 位是一个粘性位,当 V 位被设置时,Q 位也会被设置,直到被显式清除。
  • GE( The Greater than or Equal flags):意为大于等于,用于控制条件分支指令的执行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

九州金榜家庭教育孩子沉迷手机网络怎么办?

孩子沉迷于手机网络的问题,在当今社会已变得日益严重。手机网络的普及使得孩子们过早地接触到了虚拟世界,而长时间沉浸其中不仅影响他们的学业,还可能对他们的身心健康造成危害。那么,面对这一问题,家长应该如何应对呢…

数字人视频合成平台推荐

数字人讲解视频和全景作品的结合是一种全新的数字交互方式,可为用户提供更加直观和具有沉浸感的内容展示和交互体验,从而适用于诸如旅游、展览、博物馆、教育培训、泛房地产、以及娱乐和文化等应用场景。 当前数字人合成视频技术已经发展至日益成熟的阶…

Oracle基础-PL/SQL编程 备份

1、PL/SQL简介 PL/SQL块结构 约定:为了方便,本文后面把PL/SQL简称PL。 PL程序都是以块(BLOCK)为基本单位,整个PL块分三部分:声明部分(使用DECLARE开头)、执行部分(以BEGIN开头)和异…

武汉星起航:跨境电商优势尽显,引领全球贸易与文化交流新浪潮

在全球化日益加深的今天,跨境电商行业以其独特的优势和好处,逐渐超越了国内电商行业,成为了电商领域的新宠。跨境电商不仅拓展了企业的市场范围,还为消费者带来了更多选择和便利。武汉星起航认为与国内电商相比,跨境电…

5032温补晶振的一些常用型号和实例应用

5032晶振是常用的一种尺寸的晶振,而5032温补晶振因为其高精度高稳定性而被广泛应用。小尺寸封装5.0mm*3.2mm*1.45mm,非常节省空间,便于设计与使用。其实爱普生推出了一系列的5032温补晶振:以TG5032CAN、TG5032SAN、TG5032CDN、TG5032SDN&…

IDEA一行代码出现下划实线,怎么处理?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

【Qt】使用Qt实现Web服务器(九):EventSource+JSON实现工业界面数据刷新

1、效果 效果如下,实时刷新温度、湿度 2、源码 2.1 index.html <html><body> <!-- 页面布局,本人对HTML标签不熟悉,凑合看吧 --> <div><label for

整顿编剧市场:程序员提交测试流程的最佳实践

讲动人的故事,写懂人的代码 最近,一部去年推出的国产电视剧在IT圈子里引起了轰动。 引起关注的原因,并非剧中程序员的外形出众,而是她提交代码测试的方式——将写有代码的纸张放入文件夹,然后递给了对面的测试人员。如图1所示。 图1 程序员将写有代码的纸张放入文件夹,并…

2024年全新靠谱的FTP替代升级解决方案

随着企业规模的扩大和业务的多元化&#xff0c;传统的TCP协议在数据传输效率上逐渐显现出局限性。TCP协议虽然以其稳定性和可靠性被广泛应用&#xff0c;但在面对大规模数据传输时&#xff0c;其性能瓶颈逐渐成为企业发展的阻碍。同时&#xff0c;基于TCP的应用协议如Telnet、F…

JS两道题:判断这个月有几天;计算薪资缴税。

计算的时候直接在字符串模版中没问题的&#xff1a; swicth语句分支结构&#xff1a;&#xff08;很多不一样的固定值&#xff09; break结束当前穿透现象 他它的表达式的结果和值必须是全等的关系 当所有的值都不匹配的时候就执行这个部分代码 其实就是在考察条件问题。比如&…

网络钓鱼升级 Darcula如何窃取用户信息

近日&#xff0c;网络安全领域一种名为 “Darcula” 的网络钓鱼欺诈&#xff08;PhaaS&#xff09;悄然兴起。这种新型钓鱼方式不同于传统的手段&#xff0c;它巧妙地利用了谷歌信息和 iMessage 的富通信服务&#xff08;RCS&#xff09;&#xff0c;成为了网络犯罪分子的新手段…

AI绘画软件有什么用?

人工智能(AI)的应用已经渗透到我们生活的各个角落&#xff0c;其中就包括图像生成。AI绘画软件&#xff0c;是一种基于深度学习技术的创新工具&#xff0c;它能够根据指定的风格、主题或者素材自动创作出新的图片。那么&#xff0c;AI绘画软件具体有什么用呢? 首先&#xff0c…

开源大模型AI代理操作系统:像Windows一样,操控AI代理

去年&#xff0c;AutoGPT的出现让我们见识到了AI代理强大的自动化能力&#xff0c;并开创了一个全新的AI代理赛道。但在子任务调度、资源分配以及AI之间协作还有不少的难题。 因此&#xff0c;罗格斯大学的研究人员开源了AIOS&#xff0c;这是一种以大模型为核心的AI代理操作系…

资源优化题

资源平滑类资源优化题 不改变关键路径的情况下&#xff0c;如何避免资源扎堆使用。 破解思路: 1、能串行尽量串行。 2、一定要并行&#xff0c;尽量躲开跟人数多的活动并行。 3、如何躲开&#xff0c;就靠时差来实现。 例题1&#xff1a;某工程包括A、B、C、D、E、F、G七项工作…

Vue ElementPlus Input 输入框

Input 输入框 通过鼠标或键盘输入字符 input 为受控组件&#xff0c;它总会显示 Vue 绑定值。 通常情况下&#xff0c;应当处理 input 事件&#xff0c;并更新组件的绑定值&#xff08;或使用v-model&#xff09;。否则&#xff0c;输入框内显示的值将不会改变&#xff0c;不支…

生鲜网上交易信息系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)海鲜,餐饮电商,超市,农产品,购物车,订单管理,广告信息管理,生鲜信息管理

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

【Hello,PyQt】PyQt5中的一些对话框

QDialog类是一种特殊的窗口&#xff0c;它被设计出来作为和用户进行交换的对话框。QDialog上是可以包含其他的控件的&#xff0c;比如QLineEdit&#xff0c;QPushButton等。QDialog类的子类主要有QMessageBox&#xff0c;QFileDialog&#xff0c;QColorDialog&#xff0c;QFont…

OKCC厂家原来还有语音通知系统

最近遇到一个场景是这样的&#xff0c;可能是最开始的需求不明确&#xff0c;代理商以为他的客户场景需要用AI语音机器人来实现&#xff0c;于是已经购买了一套机器人系统给客户上线&#xff0c;但是由于系统并发问题&#xff0c;客户那边的呼叫任务机器人完不成&#xff0c;于…

OpenAI ChatGPT 与 Google Gemini 特性深度对比分析

ChatGPT与Gemini对决&#xff1a;AI 语言模型的未来之战 介绍 人工智能语言模型的出现开辟了技术的新领域。 最近&#xff0c;ChatGPT和Gemini一直是LLM的主要话题&#xff0c;并且有很多关于它们功能的比较。 在本文中&#xff0c;我们比较了该领域的两个领先者&#xff1a;Op…

书生·浦语大模型实战营 | 第1次学习笔记

前言 书生浦语大模型应用实战营 第二期正在开营&#xff0c;欢迎大家来学习。&#xff08;参与链接&#xff1a;https://mp.weixin.qq.com/s/YYSr3re6IduLJCAh-jgZqghttps://mp.weixin.qq.com/s/YYSr3re6IduLJCAh-jgZqg&#xff09; 第一堂课的视频链接&#xff1a;https://m…