ARM汇编之程序状态寄存器传输指令

news2024/11/15 21:22:39

ARM汇编之程序状态寄存器传输指令

前言

首先,请问大家几个小小问题,你清楚:

  • CLZ指令的常见使用场景;
  • 状态寄存器访问指令有哪些?

今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:

在这里插入图片描述


正文

CLZ前导0个数计数指令

CLZ指令

在ARMV5及以上的版本,存在一条特殊的指令CLZ,该指令则用于计算操作数最高端0的个数。主要应用场景如下所示:

  • 计算操作数规范化(使其最高位为1)时需要左移的位数;
  • 确定一个优先级掩码中的最高优先级(最高位的优先级);

CLZ指令格式与实例展示如下:

在这里插入图片描述

图1 CLZ指令

值得注意的是CLZ指令是从高位(31bit)向低位(0bit)进行统计寄存器中为0的个数,直至遇到第一个1停止统计。特殊地,如果操作数的bit[31]为1,则指令返回0,如果操作数为0,则指令返回32。

状态寄存器访问指令

ARM中存在两条经典指令用于实现状态寄存器和通用寄存器之间传送数据。

不过关于状态寄存器,这里需要注意以下节点:

  • 程序不能直接修改CPSR中的T控制位来直接将程序状态切换至Thumb状态,必须通过BX等指令完成程序状态的切换。
  • 一般通过修改状态寄存器是通过“读取-修改-写回”的操作序列来实现的。
  • 状态寄存器访问指令包括如下两条:
    • MRS:状态寄存器到通用寄存器的传送指令;
    • MSR:通用寄存器到状态寄存器的传送指令;

MRS指令

MRS指令主要用于将状态寄存器的内容传送到通用寄存器中。

MRS指令格式与实例展示如下所示:

在这里插入图片描述

图2 MRS指令

MRS指令主要的使用场景如下:

  • MRS指令用于将状态寄存器中的值读取到通用寄存器中;
  • 在异常中断允许嵌套时,需要在进入异常中断之后,嵌套中断发生之前保存当前处理器模式对应的SPSR,这是需要先通过MRS指令读出SPSR指令,再用其他指令将SPSR的值保存起来。
  • 在进程切换时也需要保存当前状态寄存器值。

MSR指令

MSR指令则是用于将通用寄存器的内容或一个立即数传送至状态寄存器中。

MSR指令格式与实例展示如下所示:

在这里插入图片描述

图3 MSR指令

更多精彩内容,敬请关注公号“ADAS与ECU之吾见”!

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

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

相关文章

[附源码]Python计算机毕业设计SSM金牛社区疫情防控系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]JAVA毕业设计老年人健康饮食管理系统(系统+LW)

[附源码]JAVA毕业设计老年人健康饮食管理系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项…

LeetCode 0542. 01 矩阵

【LetMeFly】542.01 矩阵 力扣题目链接:https://leetcode.cn/problems/01-matrix/ 给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示…

MySQL数据库之存储引擎

MySQL数据库之存储引擎数据存储引擎介绍MyISAM数据引擎概述MyISAM的特点介绍及数据引擎对应文件MyISAM的存储格式分类MyISAM适用的生产场景举例InnoDB数据引擎概述InnoDB特点介绍及数据引擎对应文件InnoDB适用生产场景分析企业选择存储引擎的依据如何配置存储引擎查看系统支持的…

c<8>指针

目录 2,指针的赋值 2.1C语言允许指针赋值为0(初始化) 2.2指针赋值例 2.3输出指针的值 3,用指针引用数组 3.1利用指针输入数组 3.2优先级问题 4.多维数组 5.字符串 5.1通过指针引用字符串 4.函数中对指针的应用 4.1将指针变…

[附源码]计算机毕业设计车源后台管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Acer W700废物利用- 第一章 - 安装Linux系统Debian 11.5

前言 收拾房子时在犄角旮旯发现了一台N年前的Windows平板,也就是今天的主角:Acer W700 ,机器配置是:CPU:I5-3337U;内存:4G;硬盘:128G固态; 插上充电线&…

YOLOv5图像分割--SegmentationModel类代码详解

目录 ​编辑 SegmentationModel类 DetectionModel类 推理阶段 DetectionModel--forward() BaseModel--forward() Segment类 Detect--forward SegmentationModel类 定义model将会调用models/yolo.py中的类SegmentationModel。该类是继承父类--DetectionModel类。 cl…

数学基础从高一开始1、集合的概念

数学基础从高一开始1、集合的概念 目录 数学基础从高一开始1、集合的概念 一、课程引入 解析:方程​编辑2是否有解? 解析:所有到定点的距离等于定长的点组成何种图形? 结论: 二、课程讲解 问题1: 集…

1548_AURIX_TC275_锁步比较逻辑LCL

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这可能是这段时间看过的最简单的一个章节了,所有的章节内容都可以放进这一份笔记也不显得多。 1. 首先明确LCL的意思,其实是锁步核比较器逻辑的意思,还不…

知识点1--认识Docker

IT界2014年之前,对于服务器虚拟化的使用,有过一个流派,基于Windows server系统VMware组成服务器集群,但是后期由于这样的使用方式维护成本相当高,比如服务器的序列、服务器台账以及服务器与服务器之间的切换等等&#…

据说Linuxer都难忘的25个画面

虽然对 Linux 正式生日是哪天还有些争论,甚至 Linus Torvalds 认为在 1991 那一年有四个日子都可以算作 Linux 的生日。但是不管怎么说,Linux 已经 25 岁了,这里我们为您展示一下这 25 年来发生过的 25 件重大里程碑事件。 1991:L…

SpringMVC学习笔记二(获取Cookies、Session和Header、IDEA热部署)

目录 一、一些前置知识 二、SpringMVC获取cookies和session 🍑获取cookies和header 🍑获取session 三、SpringMVC热部署 📝添加框架支持 📝settings配置开启自动热部署 📝开启运行中热部署: &…

【Autopsy数字取证篇】Autopsy案例创建与镜像分析详细教程

【Autopsy数字取证篇】Autopsy案例创建与镜像分析详细教程 Autopsy是一款非常优秀且功能强大的免费开源数字取证分析工具。—【蘇小沐】 文章目录【Autopsy数字取证篇】Autopsy案例创建与镜像分析详细教程1.实验环境2.Autopsy下载安装(一)创建案例1.软件…

【简单易操作】图漾TM460-E2深度网络相机在ROS-melodic环境下的配置过程

目录一、配置的环境二、下载内容及链接三、ubuntu环境配置下载 Camport3 SDK安装依赖编译运行四、安装OpenNI2套件下载 Camport3 OpenNI2 SDK安装 Camport3 OpenNI2 SDK五、ROS平台安装下载 Camport3 ROS SDK编译配置环境变量运行一、配置的环境 相机型号:TM460-E2…

OpenRASP agent源码分析

目录 前言 准备 源码分析 1. manifest 2. agent分析 3. agent卸载逻辑 总结 前言 笔者在很早前写了(231条消息) OpenRASP Java应用自我保护使用_fenglllle的博客-CSDN博客 实际上很多商业版的rasp工具都是基于OpenRASP的灵感来的,主要就是对核心的Java类通过…

堆(二叉堆)-优先队列-数据结构和算法(Java)

文章目录1 概述1.1 定义1.2 二叉堆表示法2 API3 堆相关算法3.1 上浮(由下至上的堆有序化)3.2 下沉(由上至下的堆有序化)3.3 插入元素3.4 删除最大元素4 实现5 性能和分析5.1 调整数组的大小5.2 元素的不可变性6 简单测试6 后记1 概…

2006-2020年全国31省人口老龄化水平

2006-2020年全国31省人口老龄化 1、时间为2006-2020年 2、来源:人口与就业年鉴 3、数据缺失情况说明: 其中2010年存在缺失,采用线性插值法进行填补,内含原始数据、线性插值 4、计算说明:以城镇地区老年抚养比衡量…

uImage的制作过程详解

1、uImage镜像介绍 参考博客:《vmlinuz/vmlinux、Image、zImage与uImage的区别》; 2、uImage镜像的制作 2.1、mkimage工具介绍 参考博客:《uImage的制作工具mkimage详解(源码编译、使用方法、添加的头解析、uImage的制作)》; 2.2…

软路由搭建:工控机(3865U)安装esxi并在esxi上创建iStoreOS做主路由(网卡直通)

一、硬件介绍 1、工控机(3865U) CPU:3865U 内存:8G 硬盘:120G 网卡:六口网卡 2、无线路由器(荣耀路由器pro2) 3、主机 下载资料、制作启动盘、系统设置 4、U盘 至少8G以上 …