命令の概要

Table 4 は、ARM、Thumb、および ThumbEE 命令セットで使用できる命令の概要を示しています。このセクションを使用して、個々の命令および疑似命令の説明移動できます。

Note

特に明記していない限り、ThumbEE 命令は Thumb 命令と同一です。

Table 4. 命令の参照ページ

ニーモニック概要ページアーキテクチャ[a]
ADCADDキャリー付き加算、加算ADD、SUB、RSB、ADC、SBC、RSCすべて
ADRプログラム相対アドレスまたはレジスタ相対アドレスのロード(狭範囲)ADR(PC 相対)すべて
ADRL 疑似命令プログラム相対アドレスまたはレジスタ相対アドレスのロード(中範囲)ADRL 疑似命令x6M
AND論理積AND、ORR、EOR、BIC、ORNすべて
ASR算術右シフトASR、LSL、LSR、ROR、RRXすべて
B分岐B、BL、BX、BLX、BXJすべて
BFCBFIビットフィールドのクリア命令と挿入命令BFC、BFIT2
BICビットクリアAND、ORR、EOR、BIC、ORNすべて
BKPTブレークポイントBKPT5
BLリンク付き分岐命令B、BL、BX、BLX、BXJすべて
BLXリンク付き分岐、命令セットの変更B、BL、BX、BLX、BXJT
BX分岐、命令セットの変更B、BL、BX、BLX、BXJT
BXJ分岐、Jazelle® へ変更B、BL、BX、BLX、BXJJ、x7M
CBZ、CBNZ0 と比較し、0 の(または 0 でない)場合に分岐する命令CBZ、CBNZT2
CDPコプロセッサデータ処理命令CDP、CDP2x6M
CDP2コプロセッサデータ処理命令CDP、CDP25、x6M
CHKA配列をチェックする命令CHKAEE
CLREX排他のクリア命令CLREXK、x6M
CLZ先行ゼロカウントCLZ5、x6M
CMNCMP否定値の比較、比較命令CMP、CMNすべて
CPSプロセッサ状態の変更命令CPS6
DBGデバッグDBG7
DMBDSBデータメモリバリア、データ同期バリアDMB、DSB、ISB7、6M
ENTERXLEAVEXThumbEE との間の状態切り替え命令ENTERX、LEAVEXEE
EOR排他的論理和(XOR)AND、ORR、EOR、BIC、ORNすべて
HBHBLHBLPHBPハンドラの分岐、指定されたハンドラへの分岐HB、HBL、HBLP、HBPEE
ISB命令同期バリアDMB、DSB、ISB7、6M
ITIf-ThenITT2
LDCコプロセッサロードLDC、LDC2、STC、STC2x6M
LDC2コプロセッサロードLDC、LDC2、STC、STC25、x6M
LDM多重レジスタロードLDM、STMすべて
LDRレジスタロード(ワード)メモリアクセス命令すべて
LDR 疑似命令レジスタロード疑似命令LDR 疑似命令すべて
LDRBレジスタロード(バイト)メモリアクセス命令すべて
LDRBTレジスタロード(バイト)、ユーザモードメモリアクセス命令x6M
LDRDレジスタロード(2 ワード)メモリアクセス命令5E、x6M
LDREX排他的レジスタロードLDREX と STREX6、x6M
LDREXBLDREXH排他的レジスタロード(バイト、ハーフワード)LDREX と STREXK、x6M
LDREXD排他的レジスタロード(ダブルワード)LDREX と STREXK、x7M
LDRHレジスタロード(ハーフワード)メモリアクセス命令すべて
LDRHTレジスタロード(ハーフワード)、ユーザモードメモリアクセス命令T2
LDRSBレジスタロード(符号付きバイト)メモリアクセス命令すべて
LDRSBTレジスタロード(符号付きバイト)、ユーザモードメモリアクセス命令T2
LDRSHレジスタロード(符号付きハーフワード)メモリアクセス命令すべて
LDRSHTレジスタロード(符号付きハーフワード)、ユーザモードメモリアクセス命令T2
LDRTレジスタロード(ワード)、ユーザモードメモリアクセス命令x6M
LSLLSR論理左シフト、論理右シフトASR、LSL、LSR、ROR、RRXすべて
MARレジスタから 40 ビット累算器への移動命令MAR、MRAXScale
MCRレジスタからコプロセッサへの移動命令MCR、MCR2、MCRR、MCRR2x6M
MCR2レジスタからコプロセッサへの移動命令MCR、MCR2、MCRR、MCRR25、x6M
MCRRレジスタからコプロセッサへの移動命令MCR、MCR2、MCRR、MCRR25E、x6M
MCRR2レジスタからコプロセッサへの移動命令MCR、MCR2、MCRR、MCRR26、x6M
MIAMIAPHMIAxy乗算および内部 40 ビット累積MIA、MIAPH、MIAxyXScale
MLA積和MUL、MLA、MLSx6M
MLS積差MUL、MLA、MLST2
MOV移動MOV、MVNすべて
MOVT上位ハーフワードにデータを代入する命令MOVTT2
MOV32 疑似命令レジスタへの 32 ビットイミディエート値の移動命令MOV32 疑似命令T2
MRA40 ビット累算器からレジスタへの移動命令MAR、MRAXScale
MRCコプロセッサからレジスタへの移動命令MRC、MRC2、MRRC、MRRC2x6M
MRC2コプロセッサからレジスタへの移動命令MRC、MRC2、MRRC、MRRC25、x6M
MRRCコプロセッサからレジスタへの移動命令MRC、MRC2、MRRC、MRRC25E、x6M
MRRC2コプロセッサからレジスタへの移動命令MRC、MRC2、MRRC、MRRC26、x6M
MRSPSR からレジスタへの移動命令MRSすべて
MRSシステムコプロセッサからレジスタへの移動命令MRS7A、7R
MSRレジスタから PSR への移動命令MSRすべて
MSRレジスタからシステムコプロセッサへの移動命令MSR7A、7R
MUL乗算MUL、MLA、MLSすべて
MVNデータの各ビットを反転させてから代入する命令MOV、MVNすべて
NOP操作なしNOPすべて
ORN論理和否定AND、ORR、EOR、BIC、ORNT2
ORR論理和AND、ORR、EOR、BIC、ORNすべて
PKHBTPKHTBハーフワードのパック命令PKHBT、PKHTB6、7EM
PLDデータをプリロードPLD、PLDW、PLI5E、x6M
PLDW書き込むためにデータをプリロードPLD、PLDW、PLI7MP
PLI命令をプリロードPLD、PLDW、PLI7
PUSHPOPレジスタをスタックに PUSH、スタックからレジスタを POPPUSH および POPすべて
QADDQDADDQDSUBQSUBサチュレート算術演算QADD、QSUB、QDADD、QDSUB5E、7EM
QADD8QADD16QASXQSUB8QSUB16QSAX並列符号付きサチュレート算術演算並列加算と並列減算6、7EM
RBITビット順序を反転REV、REV16、REVSH、RBITT2
REVREV16REVSHバイト順序を反転REV、REV16、REVSH、RBIT6
RFE例外からの復帰RFET2、x7M
RORレジスタの右ロテートASR、LSL、LSR、ROR、RRXすべて
RRX拡張付き右ロテートASR、LSL、LSR、ROR、RRXx6M
RSB逆減算ADD、SUB、RSB、ADC、SBC、RSCすべて
RSCキャリー付き逆減算ADD、SUB、RSB、ADC、SBC、RSCx7M
SADD8SADD16SASX並列符号付き算術演算並列加算と並列減算6、7EM
SBCキャリー付き減算ADD、SUB、RSB、ADC、SBC、RSCすべて
SBFXUBFX符号付き/符号なしビットフィールドの抽出命令SBFX、UBFXT2
SDIV符号付き除算SDIV、UDIV7M、7R
SELAPSR の GE フラグに基づくバイトの選択SEL6、7EM
SETENDメモリアクセス時のエンディアン形式を設定する命令SETEND6、x7M
SEVイベントを設定する命令SEV、WFE、WFI、YIELDK、6M
SHADD8SHADD16SHASXSHSUB8SHSUB16SHSAX符号付きでバイト、ハーフワード並列演算並列加算と並列減算6、7EM
SMCセキュアモニターコールSMCZ
SMLAxy符号付き積和(32 <= 16 x 16  +  32)SMULxy、SMLAxy5E、7EM
SMLADデュアル符号付き積和SMLAD、SMLSD6、7EM
 (32 <= 32 + 16 x 16 + 16 x 16)  
SMLAL符号付き積和(64 <= 64 + 32 x 32)UMULL、UMLAL、SMULL、SMLALx6M
SMLALxy符号付き積和(64 <= 64 + 16 x 16)SMLALxy5E、7EM
SMLALDデュアル符号付き積和 longSMLALD、SMLSLD6、7EM
 (64 <= 64 + 16 x 16 + 16 x 16)  
SMLAWy符号付き積和(32 <= 32 x 16  +  32)SMULWy、SMLAWy5E、7EM
SMLSDデュアル符号付き乗減累算SMLAD、SMLSD6、7EM
 (32 <= 32 + 16 x 16 - 16 x 16)  
SMLSLDデュアル符号付き乗減累算 longSMLALD、SMLSLD6、7EM
 (64 <= 64 + 16 x 16 - 16 x 16)  
SMMLA符号付き上位ワード積和(32 <= TopWord(32 x 32  +  32))SMMUL、SMMLA、SMMLS6、7EM
SMMLS符号付き上位ワード積差(32 <= TopWord(32  -  32 x 32))SMMUL、SMMLA、SMMLS6、7EM
SMMUL符号付き上位ワード乗算(32 <= TopWord(32 x 32))SMMUL、SMMLA、SMMLS6、7EM
SMUADSMUSDデュアル符号付き乗算、および積の加算または減算SMUAD{X}、SMUSD{X}6、7EM
SMULxy符号付き乗算(32 <= 16 x 16)SMULxy、SMLAxy5E、7EM
SMULL符号付き乗算(64 <= 32 x 32)UMULL、UMLAL、SMULL、SMLALx6M
SMULWy符号付き乗算(32 <= 32 x 16)SMULWy、SMLAWy5E、7EM
SRS復帰状態のストア命令SRST2、x7M
SSAT符号付きサチュレート演算SSAT、USAT6、x6M
SSAT16符号付き並列ハーフワードサチュレート演算SSAT16、USAT166、7EM
SSUB8SSUB16SSAX並列符号付き算術演算並列加算と並列減算6、7EM
STCコプロセッサストア命令LDC、LDC2、STC、STC2x6M
STC2コプロセッサストア命令LDC、LDC2、STC、STC25、x6M
STM多重レジスタストアLDM、STMすべて
STRレジスタストア(ワード)メモリアクセス命令すべて
STRBレジスタストア(バイト)メモリアクセス命令すべて
STRBTレジスタストア(バイト)、ユーザモードメモリアクセス命令x6M
STRDレジスタストア(2 ワード)メモリアクセス命令5E、x6M
STREX排他的レジスタストアLDREX と STREX6、x6M
STREXBSTREXH排他的レジスタストア(バイト、ハーフワード)LDREX と STREXK、x6M
STREXD排他的レジスタストア(ダブルワード)LDREX と STREXK、x7M
STRHレジスタストア(ハーフワード)メモリアクセス命令すべて
STRHTレジスタストア(ハーフワード)、ユーザモードメモリアクセス命令T2
STRTレジスタストア(ワード)、ユーザモードメモリアクセス命令x6M
SUB減算ADD、SUB、RSB、ADC、SBC、RSCすべて
SUBS PC、lrスタックを行わない例外からの復帰命令SUBS PC、lrT2、x7M
SVC(以前の SWIスーパーバイザコールSVCすべて
SWPSWPBレジスタとメモリ間のスワップ(ARM のみ)SWP と SWPBすべて、x7M
SXTAB、SXTAB16、SXTAH加算オプション付きの符号拡張SXT、SXTA、UXT、UXTA6、7EM
SXTB、SXTH符号付き拡張SXT、SXTA、UXT、UXTA6
SXTB16符号付き拡張SXT、SXTA、UXT、UXTA6、7EM
SYSシステムコプロセッサ命令の実行SYS7A、7R
TBBTBHテーブル分岐バイト、ハーフワードTBB、TBHT2
TEQ等価テストTST、TEQx6M
TSTテストTST、TEQすべて
UADD8UADD16UASX並列符号なし算術演算並列加算と並列減算6、7EM
UDIV符号なし除算SDIV、UDIV7M、7R
UHADD8UHADD16UHASXUHSUB8UHSUB16UHSAX並列符号なし半演算並列加算と並列減算6、7EM
UMAAL符号なし積和累算 longUMAAL6、7EM
 (64 <= 32 + 32 + 32 x 32)  
UMLALUMULL符号なし積和累算、符号なし乗算UMULL、UMLAL、SMULL、SMLALx6M
 (64 <= 32 x 32 + 64)、(64 <= 32 x 32)  
UQADD8UQADD16UQASXUQSUB8UQSUB16UQSAX並列符号なしサチュレート算術演算並列加算と並列減算6、7EM
USAD8符号なし絶対差の和USAD8、USADA86、7EM
USADA8符号なし絶対差の和の累算USAD8、USADA86、7EM
USAT符号なしサチュレート演算SSAT、USAT6、x6M
USAT16符号なし並列ハーフワードサチュレート演算SSAT16、USAT166、7EM
USUB8USUB16USAX並列符号なし算術演算並列加算と並列減算6、7EM
UXTAB、UXTAB16、UXTAH任意で加算を伴う符号なし拡張SXT、SXTA、UXT、UXTA6、7EM
UXTB、UXTH符号なし拡張SXT、SXTA、UXT、UXTA6
UXTB16符号なし拡張SXT、SXTA、UXT、UXTA6、7EM
V*詳細については、NEON と VFP プログラミングを参照して下さい。  
WFEWFIYIELDイベント待機、割り込み待機、明け渡しSEV、WFE、WFI、YIELDT2、6M

[a] アーキテクチャ欄のエントリは次の意味を持ちます。

すべて

ARM アーキテクチャのすべてのバージョンで使用できる命令です。

5

ARMv5T*、ARMv6*、および ARMv7 アーキテクチャで使用できる命令です。

5E

ARMv5TE、ARMv6*、および ARMv7 アーキテクチャで使用できる命令です。

6

ARMv6* および ARMv7 アーキテクチャで使用できる命令です。

6M

ARMv6-M および ARMv7 アーキテクチャで使用できる命令です。

x6M

ARMv6-M アーキテクチャでは使用できない命令です。

7

ARMv7 アーキテクチャで使用できる命令です。

7M

ARMv7E-M 実装を含む ARMv7-M アーキテクチャで使用できる命令です。

x7M

ARMv6-M または ARMv7-M アーキテクチャ、および ARMv7E-M 実装では使用できない命令です。

7EM

ARMv7E-M 実装では使用でき、ARMv7-M または ARMv6-M アーキテクチャでは使用できない命令です。

7R

ARMv7-R アーキテクチャで使用できる命令です。

7MP

マルチプロセス拡張を実装した ARMv7 アーキテクチャで使用できる命令です。

EE

ARM アーキテクチャの ThumbEE バリアントで使用できる命令です。

J

ARMv5TEJ、ARMv6*、および ARMv7 アーキテクチャで使用できる命令です。

K

ARMv6K および ARMv7 アーキテクチャで使用できる命令です。

T

ARMv4T、ARMv5T*、ARMv6*、および ARMv7 アーキテクチャで使用できる命令です。

T2

ARMv6T2 以上のアーキテクチャで使用できる命令です。

XScale

ARM アーキテクチャの XScale バージョンで使用できる命令です。

Z

Security Extensions が実装されている場合に使用できる命令です。


Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0489EJ
Non-ConfidentialID081711