状态寄存器传送指令 —— 访问(读写)CPSR寄存器
CPSR寄存器控制着CPU的工作模式和运算状态,出于对CPSR的保护,不允许其他指令来访问CPSR寄存器。
因此,ARM提供了读写指令来操作CPSR寄存器,这两个指令是ARM特有的指令集,因为处理器之间存在一定差异,控制状态的寄存器也可能存在差异。
目录
1、读CPSR —— MRS指令
2、写CPSR —— MSR指令
(1) 指令格式
(2) MSR指令的应用场景
1、读CPSR —— MRS指令
MRS的作用是读取CPSR寄存器的内容,并搬移到其他寄存器。
指令格式:MRS 第一操作寄存器, CPSR
MRS R1, CPSR @ 将CPSR的内容搬移到了R1寄存器 (R1 = CPSR)
2、写CPSR —— MSR指令
(1) 指令格式
MSR指令的作用是更改CPSR寄存器的内容。
指令格式:MSR CPSR, 第一操作数
MSR CPSR, #0x10 @ CPU的模式改为User模式,同时开启FIQ、IRQ
MSR CPSR, #0xD3 @ 该条不会生效
注意:第二条MSR指令不会生效,User模式比其他模式的权限都要低,出于对CPSR的保护,避免上层应用程序随意修改CPSR,切换到User模式后,无法修改CPSR寄存器。
(2) MSR指令的应用场景
这个指令一般是系统内部调用比较多。应用场景主要有两种:
a. CPU刚上电的时候
刚上电时处于SVC模式,当一切准备就绪以后,需要切换到User模式来执行应用程序,这时就会在系统内部调用这个指令。
b. 执行系统调用的时候
执行系统调用的时候,要从用户态切换到内核态,CPU的工作模式会由User模式切换到SVC模式,系统调用执行完毕返回用户态的时候,会再一次执行该指令切换到User模式。
状态寄存器传送指令 —— 访问(读写)CPSR寄存器相关推荐
- 访问CP15寄存器的指令
4.1.1 访问CP15寄存器的指令 访问CP15寄存器指令的编码格式及语法说明如下: 31 28 27 24 23 21 20 19 16 15 12 11 8 7 5 4 3 0 ...
- 第三章 寄存器(内存访问)
学号:20171308150 姓名:江漪雯 班级:17计科4班 一. 内存中字的存储 1. 8086CPU中,用16位寄存器来存储一个字.高8位存放高位字节,低8位存放低位字节. 2. 在内存中存储时 ...
- ART世界探险(4) - 数据传送指令和桶型移位器
ART世界探险(4) - 数据传送指令和桶型移位器 数据传送指令 将数在寄存器之间传递,或者将立即数传给寄存器.所谓的立即数,就是直接写在指令里的数,比如MOV X0,100,这个100就是立即数.立 ...
- 微机原理学习笔记——寻址方式和传送指令(MOV)
目录 操作数的寻址方式 立即数寻址方式 寄存器寻址方式 存储器寻址方式 段超越前缀指令 直接寻址方式 寄存器间接寻址方式 寄存器相对寻址方式 基址变址寻址方式 相对基址变址寻址方式 存储器寻址方式中的 ...
- 微机原理笔记——数据传送指令
数据传送指令 通用数据传送指令 传送指令MOV 格式 MOV DST,SRC 功能 将一个源操作数送到目的操作数 说明 1.DST是目的操作数,可以是寄存器,存储器,累加器 SRC是源操作数,可以是寄 ...
- 8086到80386汇编数据传送指令的扩展
80386及以上汇编的数据传送指令如下: MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. PO ...
- 汇编指令:MRS(读)和MSR(写)指令操作CPSR寄存器和SPSR寄存器使用
1.MSR和MRS指令介绍 MRS 指令: 对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有S ...
- 汇编指令-MRS(读)和MSR(写)指令操作CPSR寄存器和SPSR寄存器使用(1)
1.MSR和MRS指令介绍 MRS 指令: 对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有 ...
- 汇编之寄存器(内存访问)之字与字节的传送
文章目录 内存中字的存储 DS和[address] 字的传送 操作符X ptr 俗话说的好,温故而知新! 内存中字的存储 8086CPU中,用16位寄存器来存储一个字.高8位存放高位字节,低8位存放低 ...
最新文章
- python3语法、菜鸟教程_Python3
- java 字节数组 操作_Java-固定字节数组对象
- 通信大数据应用未来还有很大的想象空间
- java 内部类 线程_java多线程基本概述(十四)——Thread内部类的几种写法
- cuda 5.0配置vs2008+Visual Assist X +安装问题解决
- 周鸿祎评互联网大佬编程能力:自己可以排前三!是谁排第一?
- 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第2部分
- 【Android】两种动画介绍(Tween动画、Frame动画)
- linux c 获取硬盘使用率,Linux通过c得到硬盘使用情况
- Repository HDU - 2846 (trie)
- 【论文笔记】From Facial Parts Responses to Face Detection: A Deep Learning Approach
- 机器学习 --- 4. 大内密探HMM(隐马尔可夫)围捕赌场老千(转)
- RK px30 配置ap6212 wifi bt流程记录
- 【多线程与高并发】这可能是最全的多线程面试题了
- 自定义CardView
- 笔记本Windows7无法连接上家庭wifi,急急急!!!
- Android.Oldboot.1,腾讯手机管家发布全球首款可根除Oldboot病毒专杀
- 十二属相配对与最佳配偶
- 大龄码农的新西兰移民之路
- python读取excel日期小数_RPA-使用Python读取Excel日期结果为数字时的转换处理方法...
热门文章
- 360与腾讯qq的战争
- 风华是一指流砂,苍老了一段过往年华
- 2021年中国银行间同业拆借成交额及加权平均利率分析:成交额、同业拆借及质押式回购加权平均利率均呈增长趋势[图]
- 阿里云数据库MongoDB版助力吉比特《一念逍遥》游戏斩获千万玩家,运营效率成倍增长
- Java8 IF ELSE IF 优化
- 饥饿营销:如果世界末日来临,你愿意为我抢一件优衣库kwas联名款吗?
- instanceclient安装与配置
- 学习表——受任于败军之际,奉命于危难之间(11.28-12.4)
- 设计模式系列·王小二需求历险记(二)
- 关于组织 2021年全国大学生数学建模竞赛的通知