zoukankan      html  css  js  c++  java
  • ARM学习笔记6——程序状态寄存器访问指令

       这两条指令结合,可用于对CPSR或SPSR进行读/写操作。 当需要保存或修改当前模式下CPSR或SPSR的内容时,首先必须将这些内容传递到通用寄存器中

    1、MRS指令(Move to Register from Status Register)

      1.1、作用

        它将程序状态寄存器内容传输到通用寄存器

      1.2、语法格式

        MRS{<condition>} <Rd>,CPSR

        MRS{<condition>} <Rd>,SPSR

      1.3、参数说明

        <Rd>:确定指令的目标寄存器,如果R15被用作目标寄存器,指令的执行结果不可预知,因为每执行一个指令,PC都会改变。

      1.4、使用场合

        1.4.1、当需要保存或修改当前模式下CPSR或SPSR的内容时,首先必须将这些内容传送到通用寄存器中,对选择的位进行修改,然后将数据回写到状态寄存器

        1.4.2、当异常中断允许嵌套时,需要在进入异常处理程序之后,嵌套中断发生之前保存当前处理器模式对应的SPSR。这时需要先通过MRS指令读出SPSR的值,再用其他指令(如压栈指令)将SPSR值保存起来。

        1.4.3、在进程切换时也需要保存当前程序状态寄存器的值。

      1.5、使用举例

        1.5.1、将CPSR状态寄存器读取,保存到R1中

          MRS R1,CPSR

        1.5.2、将SPSR状态寄存器读取,保存到R2中

          MRS R2,SPSR

    2、MSR指令(Move to Status Register from Register)

      2.1、作用

        MSR指令用于通用寄存器内容传输到程序状态寄存器

      2.2、语法格式

        MSR{<condition>} CPSR_<fields>,#<immediate>

        MSR{<condition>} CPSR_<fields>,<Rm>

        MSR{<condition>} SPSR_<fields>,#<immediate>

        MSR{<condition>} SPSR_<fields>,<Rm>

      2.3、参数说明

        2.3.1、<fields>:域标志位,是下面选项中的一种或几种的组合  

            C:设置控制位掩码域(bit[16])  

            X:设置扩展位掩码域(bit[17])  

            S:设置状态位掩码域(bit[18])  

            F:设置标志位掩码域(bit[19])

        2.3.2、<immediate>:被传送到CPSR和SPSR寄存器的立即数,此立即数可以为8位立即数(范围在0x00-0xff之间)

        2.3.3、<Rm>:指定的通用寄存器,此寄存器包含将要被传送状态寄存器中的数据

  • 相关阅读:
    Update SSM agent to each EC2 via Bat and bash script
    Shell脚本循环读取文件中的每一行
    通过psexec实现远程安装软件包
    Getting Private/Public IP address of EC2 instance using AWS-cli [closed]
    Python to list users in AWS
    BAT script to set local account password never expire
    Difference between Netbios and Host name
    PowerShell官方文档
    powershell for rename server name
    Create a conditional DNS forwarder on our domain.com to Amazon default DNS provider
  • 原文地址:https://www.cnblogs.com/zjzsky/p/3532301.html
Copyright © 2011-2022 走看看