指令与伪指令

指令与伪指令区别

  • (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由CPU读取执行。
  • (汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。

ARM汇编的特点

  1. LDR/STR架构 
    ARM采用RISC架构,CPU本身不能直接读取内存,而需要先将内存中内容加载入CPU中的通用寄存器中才能被CPU处理。 
    ldr(load register)指令将内存内容加载入通用寄存器。 
    str(store register)指令将寄存器内容存入内存空间中。 
    ldr/str组合用来实现 ARM CPU和内存数据交换。 
    ARM 指令集 详解

  2. 八种寻址方式 
    立即寻址 (操作数本身就是在指令中给出) 
    ARM 指令集 详解
    寄存器寻址 (寄存器中的数值作为操作数) 
    ARM 指令集 详解
    寄存器移位寻址 (对第二个操作数进行移位操作后作为操作数) 
    ARM 指令集 详解
    寄存器间接寻址 (寄存器中的值作为操作数的地址,而操作数存放在该地址空间下) 
    ARM 指令集 详解
    基址变址寻址 (将寄存器中的内容与指令中偏移量相加作为操作数的地址,而操作数存放在该地址空间下) 
    ARM 指令集 详解
    多寄存器寻址 
    ARM 指令集 详解
    堆栈寻址 
    ARM 指令集 详解
    ARM 指令集 详解
    相对寻址 
    ARM 指令集 详解

    相关搜索:ARM 汇编里的literal pools(文字池)

  3. 指令后缀 
    同一指令经常附带不同后缀,变成不同的指令。经常使用的后缀有: 
    B(byte)功能不变,操作长度变为8位 
    H(half word)功能不变,长度变为16位 
    S(signed)功能不变,操作数变为有符号 
    如 ldr ldrb ldrh ldrsb ldrsh 
    S(S标志)功能不变,影响CPSR标志位 
    如 mov和movs movs r0, #0

  4. 条件执行后缀(Conditional execution) 
    ARM 指令集 详解 
    a. Unordered means at least one NaN operand. 
    b. HS (unsigned higher or same) is a synonym for CS. 
    c. LO (unsigned lower) is a synonym for CC. 
    d. AL is an optional mnemonic extension for always, except in IT instructions.

  5. 多级指令流水线 
    为增加处理器指令流的速度,ARM使用多级流水线。(S5PV210使用13级流水线,ARM11为8级) 
    下图为3级流水线工作原理示意图: 
    ARM 指令集 详解

PC指向正被取指的指令,而非正在执行的指令.

ARM指令的两种不同编程风格

  • ARM官方的ARM汇编风格:指令一般用大写、Windows中IDE开发环境(如ADS、MDK等)常用。如: LDR R0, [R1]
  • GNU风格的ARM汇编:指令一般用小写字母、linux中常用。如:ldr r0, [r1]

指令

数据处理指令

CPSR访问指令

跳转(分支)指令

访存指令

软中断指令

立即数的表示

协处理器相关指令

多周期访问指令

伪指令

参考文档:DDI0406C_C_arm_architecture_reference_manual. 
参考文献:王茹 浅析ARM指令的寻址方式 2012. 
参考内容:朱有鹏老师课件 
参考博客:http://blog.csdn.net/ASMARM/article/details/25792701

相关文章: