ARM 汇编指令学习:[0]编码格式与条件码域

来源:互联网 发布:pyqt设计软件 编辑:程序博客网 时间:2024/05/21 09:33

ARM 汇编指令学习:[0]编码格式与条件码域


一、ARM指令的编码格式

31 28 27 21 20 19 16 15 12 11     0 cond opcode S Rn Rd shifter_operand



其中:

  • cond [31-28] 4-bit 指令执行的条件编码
  • opcode [27-21] 4-bit 指令操作符编码
  • S [20] 1-bit 决定指令的操作是否影响CPSR的值
  • Rn [19-16] 4-bit 包含第1个操作数的寄存器编码
  • Rd [15-12] 4-bit 目标寄存器编码
  • shifter_operand [11-0] 12-bit 表示第2个操作数

一条典型的ARM指令语法如下:

<opcode>{<cond>}{S} <Rd>,<Rn>,<shifter_operand>



其中:

  • <opcode> 指令助记符
  • {<cond>} 指令执行的条件
  • {S} 决定指令的操作是否影响CPSR的值
  • <Rd> 表示目标寄存器
  • <Rn> 表示包含第1个操作数的寄存器
  • <shifter_operand> 表示第2个操作数

二、ARM指令的条件码域

条件码<cond> 条件码助记符 含义 CPSR中条件标志位值 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=1且V=1或N=0且V=0 1011 LT 带符号数小于 N=1且V=0或N=0且V=1 1100 GT 带符号数大于 Z=0且N=V 1101 LE 带符号数小于/等于 Z=1或N!=V 1110 AL 无条件执行 1111 NV 该指令从不执行
  • 我的个人主页:http://www.techping.cn/
  • 我的个人站点博客:http://www.techping.cn/blog/wordpress/
  • 我的CSDN博客:http://blog.csdn.net/techping
  • 我的简书:http://www.jianshu.com/users/b2a36e431d5e/timeline
  • 我的GitHub:https://github.com/techping
    欢迎相互follow~
0 0