ARM 彙編指令學習:[0]編碼格式與條件碼域

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 該指令從不執行

發佈了36 篇原創文章 · 獲贊 12 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章