指令机器码:
ARM 采用的是32位架构
ARM 指令集(32-bit) Thumb 指令集(16-bit )
ARM instruction set encoding 指令的机器码 (如指令 moveq r0,r1 机器码 0x01A00001 )
31 ~ 28 24 ~ 21 20 19 ~ 16 15 ~ 12 11 ~ 0
-------------------------------------------------------------------------------------------------
| cond | | opcode 操作码 | S | | Rd | Rs (操作数) |
-------------------------------------------------------------------------------------------------
0 1101(mov) 0 1
0000(EQ) Z = 1 Equal 相等
0001(NE) Z = 0 Not Equal 不相等
0010(CS/HS) C = 1 Carry Set 有进位,无符号数 大于等于
0011(CC/LO) C = 0 Carry Clear 无进位,无符号数 小于
0100(MI) N = 1 Minus,negative 减 ,负数
0101(PL) N = 0 Plus,positive or zero 加, 正数或零
0110(VS) V = 1 Overflow Set 溢出
0111(VC) V = 0 Overflow Clear 无溢出
1000(HI) C ==1 and Z ==0 Unsighed Higher 无符号数大于
1001(LS) C ==0 or Z ==1 Unsigned lower or same 无符号数小于等于
1010(GE) N ==V Signed greater than or equal
1011(LT) N !=V Signed Less Than 有符号数小于
1100(GT) Z ==0 and N ==V Signed Greater Than 有符号数大于
1101(LE) Z ==1 or N!=V Signed less than or equal 有符号数小于等于
1110(none) 不启用条件判断
立即数合法性 用伪指令 ldr r0,=0x445501替换
ARM 指令包含条件判断