arm指令

arm指令
Thumb® 16 位指令集
快速參考卡
本卡列出了版本低於 ARM®v6T2 的支持 Thumb 的處理器中可用的所有 Thumb 指令。此外,還列出了所有 Thumb-2 16 位指令。
除非另外註明,否則本卡中顯示的指令均爲 Thumb-2 16 位指令。
除非指定,否則所有寄存器都爲 Lo (R0-R7)。 Hi 寄存器爲 R8-R15。
表關鍵字
§ 請參閱表 ARM 體系結構版本。<loreglist+LR> 以逗號隔開的 Lo 寄存器列表。加上 LR,括在大括號 { 和 } 內。
<loreglist> 以逗號隔開的 Lo 寄存器列表,括在大括號 { 和 } 內。<loreglist+PC> 以逗號隔開的 Lo 寄存器列表。加上 PC,括在大括號 { 和 } 內。
運算 彙編器更新 操作說明
移動立即數MOVS Rd, #<imm> N Z Rd := imm imm 範圍爲 0-255。
Lo 到 Lo MOVS Rd, Rm N Z Rd := Rm LSLS Rd, Rm, #0 的同義詞
Hi 到 Lo、Lo 到 Hi、Hi 到 Hi MOV Rd, Rm Rd := Rm 不是 Lo 到 Lo。
任何寄存器之間6 MOV Rd, Rm Rd := Rm 任何寄存器之間。
加法立即數 3 ADDS Rd, Rn, #<imm> N Z C V Rd := Rn + imm imm 範圍爲 0-7。
所有寄存器 Lo ADDS Rd, Rn, Rm N Z C V Rd := Rn + Rm
Hi 到 Lo、Lo 到 Hi、Hi 到 Hi ADD Rd, Rd, Rm Rd := Rd + Rm 不是 Lo 到 Lo。
任何寄存器之間T2 ADD Rd, Rd, Rm Rd := Rd + Rm 任何寄存器之間。
立即數 8 ADDS Rd, Rd, #<imm> N Z C V Rd := Rd + imm imm 範圍爲 0-255。
帶進位ADCS Rd, Rd, Rm N Z C V Rd := Rd + Rm + C-bit
值與 SP ADD SP, SP, #<imm> SP := SP + imm imm 範圍爲 0-508(字對齊)。
SP 所存儲的地址ADD Rd, SP, #<imm> Rd := SP + imm imm 範圍爲 0-1020(字對齊)。
PC 所存儲的地址ADR Rd, <label> Rd := label 標籤範圍爲 PC 到 PC+1020(字對齊)。
減法Lo 到 Lo SUBS Rd, Rn, Rm N Z C V Rd := Rn – Rm
立即數 3 SUBS Rd, Rn, #<imm> N Z C V Rd := Rn – imm imm 範圍爲 0-7。
立即數 8 SUBS Rd, Rd, #<imm> N Z C V Rd := Rd – imm imm 範圍爲 0-255。
帶進位SBCS Rd, Rd, Rm N Z C V Rd := Rd – Rm – NOT C 位
來自 SP 的值SUB SP, SP, #<imm> SP := SP – imm imm 範圍爲 0-508(字對齊)。
求反RSBS Rd, Rn, #0 N Z C V Rd := – Rn 同義詞:NEGS Rd, Rn
乘法乘法MULS Rd, Rm, Rd N Z Rd := Rm Rd C 和 V 標記在 §4T 中不可預測,
在 §5T 及更高版本中保持不變
比較CMP Rn, Rm N Z C V 更新 Rn – Rm 的 APSR 標記可爲 Lo 和 Lo、Lo 和 Hi、Hi 和 Lo 或者 Hi 和 Hi。
求反CMN Rn, Rm N Z C V 更新 Rn + Rm 的 APSR 標記
立即數CMP Rn, #<imm> N Z C V 更新 Rn – imm 的 APSR 標記imm 範圍爲 0-255。
邏輯與ANDS Rd, Rd, Rm N Z Rd := Rd AND Rm
異或EORS Rd, Rd, Rm N Z Rd := Rd EOR Rm
或ORRS Rd, Rd, Rm N Z Rd := Rd OR Rm
位清零BICS Rd, Rd, Rm N Z Rd := Rd AND NOT Rm
取反移動MVNS Rd, Rd, Rm N Z Rd := NOT Rm
測試位TST Rn, Rm N Z 更新 Rn AND Rm 的 APSR 標記
移位/循環邏輯左移LSLS Rd, Rm, #<shift> N Z C Rd := Rm << shift 允許移動 0-31 位。 如果移位爲 0,則不會影響 C 標記。
LSLS Rd, Rd, Rs N Z C Rd := Rd << Rs[7:0] 如果 Rs[7:0] 爲 0,則不會影響 C 標記。
邏輯右移LSRS Rd, Rm, #<shift> N Z C Rd := Rm >> shift 允許移動 1-32 位。
LSRS Rd, Rd, Rs N Z C Rd := Rd >> Rs[7:0] 如果 Rs[7:0] 爲 0,則不會影響 C 標記。
算術右移ASRS Rd, Rm, #<shift> N Z C Rd := Rm ASR shift 允許移動 1-32 位。
ASRS Rd, Rd, Rs N Z C Rd := Rd ASR Rs[7:0] 如果 Rs[7:0] 爲 0,則不會影響 C 標記。
向右循環移RORS Rd, Rd, Rs N Z C Rd := Rd ROR Rs[7:0] 如果 Rs[7:0] 爲 0,則不會影響 C 標記。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章