4.1. 명령어 요약

Table 4.1에서는 ARM, Thumb 및 ThumbEE 명령어 세트에서 사용할 수 있는 명령어에 대해 간략히 설명합니다. 이 표를 사용하면 이 장의 나머지 부분에서 설명하는 개별 명령어와 의사 명령어를 찾을 수 있습니다.

Note

다른 언급이 없는 한 ThumbEE 명령어는 Thumb 명령어와 동일합니다.

Table 4.1. 명령어 위치

니모닉간단한 설명페이지아키텍처 [1]
ADC, ADDcarry 포함 더하기, 더하기ADD, SUB, RSB, ADC, SBC 및 RSC모두
ADR프로그램 또는 레지스터 기준 주소 로드 (짧은 범위) ADR모두
ADRL 의사 명령어프로그램 또는 레지스터 기준 주소 로드 (중간 범위) ADRL 의사 명령어x6M
AND논리 ANDAND, ORR, EOR, BIC 및 ORN모두
ASR오른쪽으로 산술 시프트ASR, LSL, LSR, ROR 및 RRX모두
B분기B, BL, BX, BLX 및 BXJ모두
BFC, BFI비트 필드 지우기 및 삽입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이 아닌 경우) 비교 및 분기CBZ 및 CBNZT2
CDP보조 프로세서 데이터 처리 연산CDP 및 CDP2x6M
CDP2보조 프로세서 데이터 처리 연산CDP 및 CDP25, x6M
CHKA배열 검사CHKAEE
CLREX단독 지우기CLREXK, x6M
CLZ선행 0 수 계산CLZ5, x6M
CMN, CMP음수 비교, 비교CMP 및 CMN모두
CPS프로세서 상태 변경CPS6
DBG디버그DBG, DMB, DSB 및 ISB7
DMB, DSB데이터 메모리 장벽, 데이터 동기화 장벽DBG, DMB, DSB 및 ISB7, 6M
ENTERX, LEAVEXThumbEE로 또는 ThumbEE에서 상태 변경ENTERX 및 LEAVEXEE
EOR배타적 ORAND, ORR, EOR, BIC 및 ORN모두
HB, HBL, HBLP, HBP처리기 분기, 지정된 처리기로 분기HB, HBL, HBLP 및 HBPEE
ISB명령어 동기화 장벽DBG, DMB, DSB 및 ISB7, 6M
ITIf-ThenITT2
LDC보조 프로세서 로드LDC, LDC2, STC 및 STC2x6M
LDC2보조 프로세서 로드LDC, LDC2, STC 및 STC25, x6M
LDM다중 레지스터 로드LDM 및 STM모두
LDR레지스터 로드 명령어메모리 액세스 명령어모두
LDR 의사 명령어레지스터 로드 의사 명령어LDR 의사 명령어모두
LDREX단독 레지스터 로드LDREX 및 STREX6, x6M
LDREXB, LDREXH바이트 및 하프워드 단독 레지스터 로드LDREX 및 STREXK, x6M
LDREXD더블워드 단독 레지스터 로드LDREX 및 STREXK, x7M
LSL, LSR왼쪽으로 논리 시프트, 오른쪽으로 논리 시프트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
MIA, MIAPH, MIAxy내부 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 및 MRRC2모두
MRC2보조 프로세서에서 레지스터로 이동MRC, MRC2, MRRC 및 MRRC25, x6M
MRSPSR에서 레지스터로 이동MRS모두
MSR레지스터에서 PSR로 이동MSR모두
MUL곱하기MUL, MLA 및 MLS모두
MVN이동하지 않음MOV 및 MVN모두
NOP연산 없음NOP, SEV, WFE, WFI 및 YIELD모두
ORN논리 OR NOTAND, ORR, EOR, BIC 및 ORNT2
ORR논리 ORAND, ORR, EOR, BIC 및 ORN모두
PKHBT, PKHTB하프워드 패킹PKHBT 및 PKHTB6, x7M
PLD데이터 사전 로드PLD, PLDW 및 PLI5E, x6M
PLDW쓰기를 위해 데이터 사전 로드PLD, PLDW 및 PLI7MP
PLI사전 로드 명령어PLD, PLDW 및 PLI7
PUSH, POP스택으로 레지스터 푸시, 스택에서 레지스터 팝PUSH 및 POP모두
QADD, QDADD, QDSUB, QSUB포화 산술QADD, QSUB, QDADD 및 QDSUB5E, x7M
QADD8, QADD16, QASX, QSUB8, QSUB16, QSAX병렬 부호 있는 포화 산술병렬 더하기 및 빼기6, x7M
RBIT비트 반전REV, REV16, REVSH 및 RBITT2
REV, REV16, REVSH바이트 순서 반전REV, REV16, REVSH 및 RBIT6
RFE예외에서 복귀RFET2, x7M
ROR레지스터를 오른쪽으로 회전ASR, LSL, LSR, ROR 및 RRX모두
RSB역방향 빼기ADD, SUB, RSB, ADC, SBC 및 RSC모두
RSCcarry 포함 역방향 빼기ADD, SUB, RSB, ADC, SBC 및 RSCx6M
SADD8, SADD16, SASX병렬 부호 있는 산술병렬 더하기 및 빼기6, x7M
SBCcarry 포함 빼기ADD, SUB, RSB, ADC, SBC 및 RSC모두
SBFX, UBFX부호 있는 및 부호 없는 비트 필드 추출SBFX 및 UBFXT2
SDIV부호 있는 나누기SDIV 및 UDIV7M, 7R
SELAPSR GE 플래그에 따라 바이트 선택SEL6, x7M
SETEND메모리 액세스에 엔디안 설정SETEND6, x7M
SEV이벤트 설정NOP, SEV, WFE, WFI 및 YIELDK, 6M
SHADD8, SHADD16, SHASX, SHSUB8, SHSUB16, SHSAX병렬 부호 있는 양분 산술병렬 더하기 및 빼기6, x7M
SMC보안 모니터 호출SMCZ
SMLAD이중 부호 있는 곱하기 누산 SMLAD 및 SMLSD6, x7M
  (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, x7M
SMLALDlong에 대한 이중 부호 있는 곱하기 누산SMLALD 및 SMLSLD6, x7M
  (64 <= 64 + 16 x 16 + 16 x 16)   
SMLSD이중 부호 있는 곱하기 빼기 누산SMLAD 및 SMLSD6, x7M
  (32 <= 32 + 16 x 16 – 16 x 16)   
SMLSLDlong에 대한 이중 부호 있는 곱하기 빼기 누산SMLALD 및 SMLSLD6, x7M
  (64 <= 64 + 16 x 16 – 16 x 16)   
SMMUL부호 있는 상위 워드 곱하기 (32 <= TopWord (32 x 32) ) SMMUL, SMMLA 및 SMMLS6, x7M
SMUAD, SMUSD이중 부호 있는 곱하기 및 결과 더하기 또는 빼기SMUAD{X} 및 SMUSD{X}6, x7M
SMULxy부호 있는 곱하기 (32 <= 16 x 16) SMULxy 및 SMLAxy5E, x7M
SMULL부호 있는 곱하기 (64 <= 32 x 32) UMULL, UMLAL, SMULL 및 SMLALx6M
SMULWy부호 있는 곱하기 (32 <= 32 x 16) SMULWy 및 SMLAWy5E, x7M
SRS반환 상태 저장SRST2, x7M
SSAT부호 있는 포화SSAT 및 USAT6, x6M
SSAT16부호 있는 포화, 병렬 하프워드SSAT16 및 USAT166, x7M
SSUB8, SSUB16, SSAX병렬 부호 있는 산술병렬 더하기 및 빼기6, x7M
STC보조 프로세서 저장LDC, LDC2, STC 및 STC2x6M
STC2보조 프로세서 저장LDC, LDC2, STC 및 STC25, x6M
STM다중 레지스터 저장LDM 및 STM모두
STR레지스터 저장 명령어메모리 액세스 명령어모두
STREX단독 레지스터 저장LDREX 및 STREX6, x6M
STREXB, STREXH단독 레지스터 저장 바이트, 하프워드LDREX 및 STREXK, x6M
STREXD더블워드 단독 레지스터 저장LDREX 및 STREXK, x7M
SUB빼기ADD, SUB, RSB, ADC, SBC 및 RSC모두
SUBS pc, lr스택 없이 예외에서 반환SUBS pc, lrT2, x7M
SVC (이전 SWI) 관리자 호출SVC모두
SWP, SWPB레지스터와 메모리 스왑 (ARM에만 해당) SWP 및 SWPB모두, x7M
SXTB, SXTB16, SXTH부호 있는 확장SXT, SXTA, UXT 및 UXTA6
SXTAB, SXTAB16, SXTAH더하기 포함 부호 있는 확장SXT, SXTA, UXT 및 UXTA6, x7M
TBB, TBH테이블 분기 바이트, 하프워드TBB 및 TBHT2
TEQ, TST동등 테스트, 테스트TST 및 TEQ모두
UADD8, UADD16, UASX병렬 부호 없는 산술병렬 더하기 및 빼기6, x7M
UDIV부호 없는 나누기SDIV 및 UDIV7M, 7R
UHADD8, UHADD16, UHASX, UHSUB8, UHSUB16, UHSAX병렬 부호 없는 양분 산술병렬 더하기 및 빼기6, x7M
UMAALlong에 대한 부호 없는 곱하기 누산UMAAL6, x7M
  (64 <= 32 + 32 + 32 x 32)   
UMLAL, UMULL부호 없는 곱하기 누산, 곱하기UMULL, UMLAL, SMULL 및 SMLALx6M
  (64 <= 32 x 32 + 64), (64 <= 32 x 32)   
UQADD8, UQADD16, UQASX, UQSUB8, UQSUB16, UQSAX병렬 부호 없는 포화 산술병렬 더하기 및 빼기6, x7M
USAD8부호 없는 절대차의 합USAD8 및 USADA86, x7M
USADA8부호 없는 절대차의 합 누산USAD8 및 USADA86, x7M
USAT부호 없는 포화SSAT 및 USAT6, x6M
USAT16부호 없는 포화, 병렬 하프워드SSAT16 및 USAT166, x7M
USUB8, USUB16, USAX병렬 부호 없는 산술병렬 더하기 및 빼기6, x7M
UXTB, UXTB16, UXTH부호 없는 확장SXT, SXTA, UXT 및 UXTA6
UXTAB, UXTAB16, UXTAH더하기 포함 부호 없는 확장SXT, SXTA, UXT 및 UXTA6, x7M
V*자세한 내용은 Chapter 5 NEON 및 VFP 프로그래밍을 참조하십시오.  
WFE, WFI, YIELD이벤트 대기, 인터럽트 대기, 양도NOP, SEV, WFE, WFI 및 YIELDT2, 6M

[1] 아키텍처 열의 항목은 다음과 같은 의미를 갖습니다.

모두

해당 명령어는 모든 버전의 ARM 아키텍처에서 사용할 수 있습니다.

5

해당 명령어는 ARMv5T*, ARMv6* 및 ARMv7 아키텍처에서 사용할 수 있습니다.

5E

해당 명령어는 ARMv5TE, ARMv6* 및 ARMv7 아키텍처에서 사용할 수 있습니다.

6

해당 명령어는 ARMv6* 및 ARMv7 아키텍처에서 사용할 수 있습니다.

6M

해당 명령어는 ARMv6-M 및 ARMv7 아키텍처에서 사용할 수 있습니다.

x6M

해당 명령어는 ARMv6-M 프로파일에서 사용할 수 없습니다.

7

해당 명령어는 ARMv7 아키텍처에서 사용할 수 있습니다.

7M

해당 명령어는 ARMv7-M 프로파일에서 사용할 수 있습니다.

x7M

해당 명령어는 ARMv6-M 또는 ARMv7-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

해당 명령어는 보안 확장이 구현된 경우 사용할 수 있습니다.


Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential