zoukankan      html  css  js  c++  java
  • ARM指令分类学习

    算术和逻辑指令

    MOV  <dest>,  <op_1>  dest = op_1  dest必须是通用寄存器,op_1可以是通用寄存器或者是立即数

    MVN  <dest>,  <op_1>  dest = !op_1  dest必须是通用寄存器,op_1可以是通用寄存器或者是立即数

    SUB  <dest>,  <op 1>,  <op 2>  dest = op_1 - op_2  SUB 用操作数 1 减去操作数 2 ,把结果放置到目的寄存器中。操作数 1 是一个寄存器,操作数 2 可

    以是一个寄存器,被移位的寄存器,或一个立即数

    ADD  <dest>,  <op 1>,  <op 2>  dest = op_1 + op_2  ADD 将把两个操作数加起来,把结果放置到目的寄存器中。操作数 1 o是一个寄存器,操作数 2 可以是一

    个寄存器,被移位的寄存器,或一个立即数

    AND  <dest>,  <op 1>,  <op 2>  dest = op_1 AND op_2  AND 将在两个操作数上进行逻辑与,把结果放置到目的寄存器中;对屏蔽你要在上面工作的位很有用。 操作数 1 是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即数

    BIC  <dest>,  <op 1>,  <op 2>  dest = op_1 AND (!op_2)  BIC 是在一个字中清除位的一种方法,与 OR 位设置是相反的操作。操作数 2 是一个 32 位位掩码

    (mask)。如果如果在掩码中设置了某一位,则清除这一位。未设置的掩码位指示此位保持不变。这里需要解释一下,mov r1, #0b101011  mov r2,r1,#0b101  结果是

    r2 = 101010

    比较指令

    cmp  <op 1>,   <op 2>  status = op_1 - op_2  改变CPSR高位里状态N(Negative)位和Z(Zero)位

    TST  <op 1>,   <op 2>  Status = op_1 AND op_2  按位与,如果按位与后的结果是0则改变CPSR高位里的Z(Zero)位

    跳转指令(分支指令)

    b和bl,假设要跳转到一个函数,bl会保存跳转前的地址,但b不会

    移位指令

    lsl和ror,逻辑左移和循环右移,如果是1执行逻辑左移,那结果就是100:;如果11执行循环右移1位,那么结果就是1000 0000 0000 0000 0000 0000 0000 0001

    mov r1, #0b1

    mov r1,r1,lsl#2

    mov r1, #0b1

    mov r1,r1,ror#1

    程序状态字访问指令

    msr和mrs

    存储器访问指令

    LDR,STR

  • 相关阅读:
    【PHP&&MySQL详解】
    【PHP对XML文件的操作技术【完整版】】
    【PHP XML与dtd概述【完整版】】
    【PHP的异常处理【完整】】
    【PHP用户的错误日志】
    【PHP自定义显示系统级别的致命错误和用户级别的错误】
    【PHP数组的使用】
    【PHP构造方法和析构方法的使用】
    【php全局变量和静态变量、静态方法的使用方法】
    【mysql启动Innodb的方法】
  • 原文地址:https://www.cnblogs.com/sanshijvshi/p/8319081.html
Copyright © 2011-2022 走看看