Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96511
  • 博文数量: 60
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 651
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-03 10:45
文章分类
文章存档

2014年(11)

2013年(49)

我的朋友

分类: IT业界

2014-01-10 17:31:00

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

 1、MRS指令

 MRS指令的格式为:
 MRS{条件} 通用寄存器, 程序状态寄存器(CPSR 或SPSR)
 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 的内容到CPSR, 但仅仅修改CPSR 中的控制位域

  文章由供应商小编原创,转载请注明文章来源出处,谢谢合作!
阅读(668) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~