首页 > 编程知识 正文

CPSR寄存器状态位的作用,cpsr寄存器中哪些位用来定义处理器状态

时间:2023-05-05 10:28:10 阅读:225482 作者:3275

首先给出其各个位的定义如下:

(CPSR,SPSR)访问指令

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

1、 wgdfk 指令
wgdfk 指令的格式为:wgdfk{条件} 通用寄存器,程序状态寄存器(CPSR 或SPSR)
wgdfk 指令用于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下几种情况:
- 当需要改变程序状态寄存器的内容时,可用wgdfk 将程序状态寄存器的内容读入通用寄存器,修改后再写回程序状态寄存器。
- 当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出程序状态寄存器的值,然后保存。

指令示例:
wgdfk R0,CPSR ;传送CPSR 的内容到R0
wgdfk 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 中的控制位域

转载于:https://www.cnblogs.com/hyd10000/archive/2010/05/20/1740394.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。