博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MSR和MRS 指令
阅读量:2721 次
发布时间:2019-05-13

本文共 1538 字,大约阅读时间需要 5 分钟。

 

(转)http://blog.ednchina.com/yannzi/197679/message.aspx

& http://blog.sina.com.cn/s/blog_4117d8560100b432.html

1  状态寄存器传送至通用寄存器类指令

功能:将状态寄存器的内容传送至通用寄存器。

格式:

MRS{<条件码>}Rd,CPSR}SPSR
其中:
Rd      目标寄存器,Rd不允许R15。
R=0     将CPSR中的内容传送目的寄存器。
R=1     将SPSR中的内容传送至目的寄存器。

注释:

MRS与MSR配合使用,作为更新PSR的读-修改-写序列的一部分。例如:改变处理器或清除标志Q。注意:当处理器在用户模式或系统模式下,一定不能试图访问SPSR
这条指令不影响条件码标志。
例:
MRS   R0,CRSR              ;将CPSR中的内容传送至R0
MRS   R3,SPSR              ;将SPSR中的内容传送至R3

2  通用寄存器传送至状态寄存器传送指令

功能:将通用寄存器的内容传送至状态寄存器。

格式:

MSR{<条件码>CPSR_f|SPSR_f,<#ommed_8r>
MSR{<条件码>CPSR_<field>|SPSR_<field>,Rm
其中:
<field>字段可以是以下之一或多种:(位从右到左)
C:控制域屏蔽字段(PSR中的第0位到第7位);
X:扩展域屏蔽字段(PSR中的第8位到第15位);
S:状态域屏蔽字段(PSR中的第16位到第32位);
F:标志域屏蔽字段(PSR中的第24位到第31位)。
immed_8r  值数字常量的表达式。常量必须对应8位位图。该位图在32位字中循环移位偶数数位。
Rm        源寄存器。

注释:

同前一条指令(MRS)。
例1:设置N、Z、C、V标志。
MSR    CPSR_f,#&f0000000            ;仅高位有效,其他必须为0
例2:
仅置位C标志,保留N、Z、V标志。
MRS    R0,CPSR                    ;将CPSR中的内容传送至R0
ORR    R0,R0,#&1f                ;置位R0的第29位
MSR    CPSR_c,R0                   ;再将R0中的内容传送至CPSR

 

例子:设置cpu工作在超级保护模式(SVC32)

@set the cpu to SVC32 mode

mrs r0,cpsr  

 

@把CPSR内容存入r0.使用了mrs指令:专用寄存器到通过寄存器的存取.

@CPSR当前程序状态寄存器格式如下:

31  30  29  28  27  26  25  24  ~ ~ ~ 8               0

___ ___ ___ ___ ___ ___ ___ ___  _ _ _ _  ___ ___ ___ ____ ____ ____ ____ ____
@| N | Z | C | V | * | * | * | * | * 
* | I | F | T | M4 | M3 | M2 | M1 | M0 |
@

bic r0,r0,#0x1f 

@bic指令(bit clear): r0:= r0 and (not op2).上边的指令目的是把bit0~bit4清零.

 

orr r0,r0,#0xd3

@r0:= r0 or 0xd3 . 以上三条指令执行后r0值为:**** **** **** **** **** ***** 11*1 0011

 

msr cpsr,r0  

@把r0存于cpsr.注意:msr指令是专用的通用寄存器到特殊功能寄存器的指令与mrs对应

 

说明:通过上边的指令可以看到,实现了两个功能.1,disable 外部中断(IRQ)与快速中断(FIR).2,把系统设为SVC32状态(超级保护)即M4~M1=10011

转载地址:http://uestd.baihongyu.com/

你可能感兴趣的文章
oracle group by 的各种用法
查看>>
己的单点登录(SSO)服务
查看>>
深入理解分布式事务
查看>>
navicat中文破解版,navicat破解版,navicat for mysql10.0.11简体中文破解版
查看>>
阿里云部署Java web项目初体验(转)
查看>>
关于将Web项目部署到阿里云服务器-5个步骤搞定
查看>>
阿里云部署javaweb项目个人经历
查看>>
springMVC中上传图片
查看>>
springmvc上传图片并显示图片--支持多图片上传
查看>>
eclipse新建Maven项目,并转成Web项目
查看>>
java集合框架综述
查看>>
Mina框架入门demo
查看>>
isNotEmpty 和isNotBlank的区别
查看>>
Maven常用命令及在Eclipse中的应用
查看>>
常用的Maven命令
查看>>
maven jetty 插件使用
查看>>
maven之clean、install命令
查看>>
java中高级面试题
查看>>
Java中高级面试总结-更新中
查看>>
Eclipse 开发设置编码格式--4个修改地方完美
查看>>