美文网首页
Arm指令学习

Arm指令学习

作者: 噜噜丶 | 来源:发表于2018-08-25 14:34 被阅读0次

    持续更新文章...

    0:后缀学习

    后缀 含义
    S SUB R1,R0,R3 R0的值减去R3的值,结果存入R1
    SUBS R1,R0,R3 R0的值减去R3的值,刷新CPSR
    ! LDR R3,[R0,#4] 将R0+4作为地址指针,把这个指针的地址单元的数据读入R3
    LDR R3,[R0,#4]! 将R0+4作为地址指针,把这个指针的地址单元的数据读入R3,还把R0+4的结果送入到R0

    1:寻址方式

    方式 含义
    多寄存器寻址 加载

    1:指令条件码

    条件码 助记符 标志 含义
    0000 EQ Z = 1 相等
    0001 NE Z = 0 不相等
    0010 CS/HS C = 1 无符号数大于或等于
    0011 CC/LO C = 0 无符号数小于
    0100 MI N = 1 负数
    0101 PL N = 0 正数或零
    0110 VS V = 1 溢出
    0111 VC V = 0 没有溢出
    1000 HI C = 1,Z = 0 无符号数大于
    1001 LS C = 0,Z = 1 无符号数小于或等于
    1010 GE N = V 有符号数大于或等于
    1011 LT N != V 有符号书小于
    1100 GT Z = 0, N = V 有符号数大于
    1101 LE Z = 1, N != V 有符号数小于或等于
    1110 AL 任何 无条件执行(指令默认条件)

    2:ARM指令

    助记符 指令功能描述 助记符 指令功能描述
    ADC 带进位加法指令 MRC 从协处理器寄存器到ARM寄存器的数据传输指令
    ADD 加法指令 MRS 传送CPSR或SPSR的内容到通用寄存器指令
    AND 逻辑与指令 MSR 传送通用寄存器到CPSR或SPSR的指令
    B 分支指令 MUL 32位乘法指令
    BIC 位清除指令 MLA 32位乘加指令
    BL 带返回的分支指令 MVN 数据取反传送指令
    BLX 带返回和状态切换的分支指令 ORR 逻辑或指令
    BX 带状态切换的分支指令 RSB 逆向减法指令
    CDP 协处理器数据操作指令 RSC 带借位的逆向减法指令
    CMN 比较反值指令 SBC 带借位减法指令
    CMP 比较指令 STC 协处理器寄存器写入存储器指令
    EOR 异或指令 STM 批量内存字写入指令
    LDC 存储器到协处理器的数据传输指令 STR 寄存器到存储器的数据存储指令
    LDM 加载多个寄存器指令 SUB 减法指令
    LDR 存储器到寄存器的数据加载指令 SWI 软件中断指令
    MCR 从ARM寄存器到协处理器寄存器的数据传输指令 SWP 交换指令
    MOV 数据传输指令 TEQ 相等测试指令

    2:跳转指令

    指令 含义
    B 最简单的跳转指令

    3:数据存储指令

    指令 含义
    LDR 加载

    4:比较指令

    指令 含义
    CMP比较指令 CMP R1,R0 实际上是R1-R0,同时刷新CPSR,但是并不存储结果
    CMN反值比较指令 CMN R0,R1 实际上就是R0+R1,并根据结果刷新CPSR
    TST位测试指令 TST R0,R1 将R0和R1按位进行与运算,并根据结果刷新CPSR
    TEQ相等测试指令 TEQ R0,R1 将R0和R1寄存器的值进行按位异或,刷新CPSR

    5:数据传送指令

    指令 含义
    MOV MOV R0,#5 将立即数5传送到寄存器R0,带S影响结果的CPSR的N和Z值
    MVN MOV R1,R2 将R2按位取反,传送到R1,带S影响结果的CPSR的N和Z值

    6:移位指令

    指令 含义
    LSL 逻辑左移
    LSR 逻辑右移
    ASR 算术右移
    ROR 循环右移
    RRX 带扩展的循环右移

    7:算术指令

    指令 含义
    ADD加法 ADD R0,R1,R2 实际上是R0 = R1+R2,带S的时候刷新CPSR的N,Z,C,V
    ADC带进位加法 ADDS R0,R2,R4 加低32位,S表示结果影响CPSR的N,Z,C,V
    ADD R1,,R3,R5 加高32位,带进位
    SUB减法 SUB R0,R1,R2 R0 = R1 - R2 有S的时候刷新CPSR的N,Z,C,V
    SBC带借位减法 SUBS R0,R2,R4 低32位相减,S表示影响CPSR的N,Z,C,V
    SBC R1,R3,R5 高32位相减
    RSB逆向减法 RSB R0,R1,R2 R0 = R2 - R1
    RSC带借位的逆向减法 加载

    8:逻辑运算指令

    指令 含义
    AND逻辑与 AND
    ORR逻辑或 加载
    EOR逻辑异或 加载
    BIC位清除 加载
    LDR 加载

    9:比较指令

    指令 含义
    CMP CMP R1,#10 将寄存器R1的值和10相减, 并设置CPSR的标志位
    ORR逻辑或 加载
    EOR逻辑异或 加载
    BIC位清除 加载
    LDR 加载

    更新日期-18/09/10

    相关文章

      网友评论

          本文标题:Arm指令学习

          本文链接:https://www.haomeiwen.com/subject/lihgiftx.html