• 汇编:MSR/MRS/BIC指令


    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的内容到SPSR,但仅仅修改CPSR中的控制位域

    3.BIC

    BIC指令的格式为: BIC{条件}{S}  目的寄存器,操作数1,操作数2

    BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中。

    操作数1应是一个寄存器, 操作数2可以是一个寄存器、被移位的寄存器、或一个立即数。

    操作数2为32位的掩码,如果在掩码中置了某一位1,则清除这一位。未设置的掩码位保持不变。

    BIC  R0,R0,#0x1F

    0x1F=0001 1111

    含义:清除R0的bit[4:0]位

  • 相关阅读:
    Linux的中文输入法Fcitx-国货精品
    Linux内核编译与安装[转]
    Linux内核编译与安装[转]
    修改镜像地址加快Ubuntu更新速度
    修改镜像地址加快Ubuntu更新速度
    OSX操作技巧:快速锁定系统(类似Windows+L)
    NDK编程入门笔记[转]
    NDK编程入门笔记[转]
    内置函数图形分类
    函数的定义
  • 原文地址:https://www.cnblogs.com/cxl-93/p/11009447.html
Copyright © 2020-2023  润新知