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

  • 相关阅读:
    tableView小细节
    iOS5 切换中文键盘时覆盖输入框的解决方案
    NSBundle读取txt文件,图片,plist
    iOS OC 字符串处理
    图片拉伸 几种方式
    UIAlertView小结
    新来报道
    VC6.0之Debug调试总结
    关于C++中的临时对象问题
    与临时对象的斗争(下)
  • 原文地址:https://www.cnblogs.com/sanshijvshi/p/8319081.html
Copyright © 2011-2022 走看看