分享

2.4.4 程序状态寄存器访问指令

 liwei0126sia 2011-11-06

2.4.4  程序状态寄存器访问指令

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

MRS:程序状态寄存器到通用寄存器的数据传送指令。

MSR:通用寄存器到程序状态寄存器的数据传送指令。

1. MRS指令

MRS指令的格式为:

  1. MRS{条件} 通用寄存器, 程序状态寄存器(CPSR 或SPSR) 

MRS指令用于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下几种情况:

当需要改变程序状态寄存器的内容时,可用MRS将程序状态寄存器的内容读入通用寄存器,修改后再写回程序状态寄存器。

当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出程序状态寄存器的值,然后保存。

指令示例:

  1. MRS R0, CPSR    ;传送CPSR 的内容到R0  
  2. MRS R0, SPSR    ;传送SPSR 的内容到R0  

2. MSR指令

MSR指令的格式为:

  1. MSR{条件} 程序状态寄存器(CPSR 或SPSR)_<>, 操作数 

MSR指令用于将操作数的内容传送到程序状态寄存器的特定域中。其中,操作数可以为通用寄存器或立即数。<域>用于设置程序状态寄存器中需要操作的位,32位的程序状态寄存器可分为以下4个域。

位[31:24]为条件标志位域,用f表示。

位[23:16]为状态位域,用s表示。

位[15:8]为扩展位域,用x表示.。

位[7:0]为控制位域,用c表示。

该指令通常用于恢复或改变程序状态寄存器的内容,在使用时,一般要在MSR指令中指明将要操作的域。

指令示例:

  1. MSR CPSR, R0        ;传送R0 的内容到CPSR  
  2. MSR SPSR, R0        ;传送R0 的内容到SPSR  
  3. MSR CPSR_c, R0      ;传送R0 的内容到CPSR, 但仅仅修改CPSR 中的控制位域 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多