您的位置 首页 发布

ARM处理器的程序状况寄存器(CPSR,SPSR)拜访指令

ARM微处理器支持程序状态寄存器访问指令,用于在程序状态寄存器和通用寄存器之间传送数据,程序状态寄存器访问指令包括以下两条:—MRS

ARM 微处理器支撑程序状况存放器拜访指令,用于在程序状况存放器和通用存放器之间传送

数据,程序状况存放器拜访指令包含以下两条:
— MRS 程序状况存放器到通用存放器的数据传送指令
— MSR 通用存放器到程序状况存放器的数据传送指令
1、 MRS 指令
MRS 指令的格局为:
MRS{条件} 通用存放器,程序状况存放器(CPSRSPSR
MRS 指令用于将程序状况存放器的内容传送到通用存放器中。该指令一般用在以下几种状况:
- 当需求改动程序状况存放器的内容时,可用MRS 将程序状况存放器的内容读入通用存放
器,修正后再写回程序状况存放器。
- 当在反常处理或进程切换时,需求保存程序状况存放器的值,可先用该指令读出程序状况
存放器的值,然后保存。
指令示例:
MRS R0,CPSR ;传送CPSR 的内容到R0
MRS R0,SPSR ;传送SPSR 的内容到R0
2、 MSR 指令
MSR 指令的格局为:
MSR{条件} 程序状况存放器(CPSR 或SPSR)_<域>,操作数
MSR 指令用于将操作数的内容传送到程序状况存放器的特定域中。其间,操作数可认为通用存放
器或当即数。<域>用于设置程序状况存放器中需求操作的位,32 位的程序状况存放器可分为4 个域:
位[31:24]为条件标志位域,用f 表明;
位[23:16]为状况位域,用s 表明;
位[15:8]为扩展位域,用x 表明;
位[7:0]为操控位域,用c 表明;
该指令一般用于康复或改动程序状况存放器的内容,在运用时,一般要在MSR 指令中指明即将
操作的域。
指令示例:
MSR CPSR,R0 ;传送R0 的内容到CPSR
MSR SPSR,R0 ;传送R0 的内容到SPSR
MSR CPSR_c,R0 ;传送R0 的内容到SPSR,但只是修正CPSR 中的操控位域
//

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_|SPSR_,Rm
其间:
字段能够是以下之一或多种:
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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/276803.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部