标题:
ARM指令集-程序状态寄存器访问指令
[打印本页]
作者:
look_w
时间:
2017-9-24 15:38
标题:
ARM指令集-程序状态寄存器访问指令
3.3.5
程序状态寄存器访问指令
ARM
指令不允许直接操作程序状态寄存器
CPSR
和
SPSR
。可以通过程序状态寄存器访问指令,在程序状态寄存器和通用寄存器之间传送数据,然后在通用寄存器中进行处理。
1、
MRS指令
MRS指令的格式为:
MRS{条件}
通用寄存器,程序状态寄存器(
CPSR或SPSR)
MRS指令用于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下几种情况:
1)
当需要改变程序状态寄存器的内容时,可用
MRS
将程序状态寄存器的内容读入通用寄存器,修改后再写回程序状态寄存器。
2) 当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出程序状态寄存器的值,然后保存。
如:
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
中的控制位域
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0