다음을 통해 공유


MASM 명령 형식

구문

지침은 다음 구문에 따라 소스 코드로 작성됩니다.

접두사 니모닉 피연산자 목록

명령 정의, 옵션 및 인코딩에 대한 자세한 내용은 프로세서 제조업체 프로그래밍 설명서를 참조 하세요. 일부 지침 및 명령 옵션은 Microsoft 매크로 어셈블러에서 지원되지 않을 수 있습니다.

Prefix

명령이 인코딩되는 방법에 대한 옵션을 설정하는 키워드를 사용하여 일부 지침을 접두사로 사용할 수 있습니다. REP, REPE, REPZREPNEREPNZ 키워드는 단일 명령에서 수행할 memcpy 문자열 명령 또는 strlen 작업의 종류와 함께 사용됩니다. 키워드는 LOCK 메모리 피연산자에서 특정 작업을 원자성으로 만듭니다. 지원되는 프로세서에서 XACQUIRE HLE(Hardware Lock Elision)을 수행하도록 키워드와 XRELEASE 결합할 수 있습니다. 이 경우 트랜잭션 병렬 처리가 향상됩니다.

나머지 접두사는 AVX 명령이 인코딩되는 방법을 제어합니다. AVX 명령은 opcode 앞에 나타나는 접두사를 사용하여 VEX 인코딩됩니다. 특정 바이트 명령 접두사 및 opcode 리드 인 바이트를 대신합니다. 많은 AVX 지침은 더 많은 옵션을 지원하는 접두사를 사용하여 EVEX 인코딩되는 AVX-512 명령이기도 합니다. MASM은 명령을 최대한 간결하게 인코딩하려고 하지만, 이러한 키워드를 사용하면 특정 명령과 함께 사용할 인코딩을 더 효율적으로 제어할 수 있습니다. 또한 해당 AVX-512 명령 후에 도입된 AVX 명령 양식을 강제로 생성하는 데 사용됩니다. 예를 들어 vex vpdpbusd AVX512-VNNI 양식이 아닌 명령의 VPDPBUSD AVX-VNNI 형식을 지정합니다. 명시적 접두사 키워드 없이 AVX 명령이 나타나면 선택한 인코딩은 현재 AVX 인코딩 설정에 따라 달라집니다. 지시 OPTION AVXENCODING 문을 사용하여 이 설정을 변경할 수 있습니다.

VEX2, VEX3, VEXEVEX 옵션은 Visual Studio 2019 버전 16.7 이상에서 사용할 수 있습니다.

키워드 사용
REP (E)CX의 개수별로 문자열 작업을 반복합니다.
REPE
REPZ
비교가 같을 때(E)CX의 개수로 제한되는 동안 문자열 작업을 반복합니다.
REPNE
REPNZ
비교가 같지 않은 동안(E)CX의 개수로 제한되는 동안 문자열 작업을 반복합니다.
LOCK 메모리 피연산자에서 원자성으로 작업을 수행합니다.
XACQUIRE 접두사로 가장 자주 사용되는 HLE 트랜잭션을 LOCK 시작합니다.
XRELEASE 접두사에서 가장 자주 사용되는 HLE 트랜잭션을 LOCK 완료합니다.
VEX 접두사를 사용하여 VEX AVX 명령을 인코딩합니다.
VEX2 2 바이트 VEX 접두사를 사용하여 AVX 명령을 인코딩합니다.
VEX3 3 바이트 VEX 접두사를 사용하여 AVX 명령을 인코딩합니다.
EVEX 접두사를 사용하여 EVEX AVX 명령을 인코딩합니다.

기억을 돕는

니모닉은 허용되는 접두사 및 피연산자 패턴을 결정하는 특정 명령을 식별합니다.

피연산자 목록

대부분의 명령은 피연산자 목록을 사용하여 명령에 대한 명시적 원본 및 대상 피연산자를 지정합니다. 피연산자 목록에는 메모리 참조, 레지스터 및 상수 값이 포함될 수 있습니다. 각 명령을 사용하면 피연산자 목록의 각 위치에 특정 유형의 피연산자만 표시할 수 있습니다. MOVSCMPS 명령을 제외하고 피연산자 중 하나만 메모리 참조일 수 있습니다. 다른 모든 피연산자는 참조 또는 상수 등록이어야 합니다.

AVX-512 옵션

일부 AVX-512 지침에서는 더 많은 옵션을 지정할 수 있습니다. 이러한 옵션은 마스킹, 제로 마스킹, 포함된 브로드캐스트, 포함된 반올림 및 예외 제거입니다.

마스킹 을 사용하면 벡터의 선택한 요소에만 작업을 적용할 수 있습니다. 이 옵션은 대상 피연산자 다음에 {k1} 마스크 레지스터를 배치하여 {k7} 제어됩니다. 마스크 레지스터 뒤에는 {z}대상의 선택되지 않은 모든 요소가 0으로 설정됩니다. 이 대안을 제로 마스킹이라고 합니다.

포함된 브로드캐스트 를 사용하면 메모리의 스칼라 값을 벡터의 모든 요소에 적용할 수 있습니다. 이 옵션은 일반 메모리 참조에 사용하는 PTR 것과 유사한 요소 크기 및 키워드 BCST 를 메모리 피연산자에 추가하여 사용할 수 있습니다.

포함된 반올림 은 전역 반올림 모드를 설정하고 다시 설정하지 않고도 개별 부동 소수점 명령에 대한 반올림 모드를 제어합니다. 중괄호로 묶인 반올림 모드의 명령에 따라 사용하도록 설정됩니다. 사용하도록 설정하면 해당 명령에 대해서만 모든 예외가 표시되지 않습니다. 반올림하지 않는 부동 소수점 명령은 유사한 옵션을 사용하여 모든 예외를 표시하지 않을 수도 있습니다.

  ; Examples of AVX-512 options
  vaddps xmm1 {k1}, xmm2, xmm3            ; merge-masking
  vsubps ymm0 {k4}{z}, ymm1, ymm2         ; zero-masking
  vmulps zmm0, zmm1, dword bcst scalar    ; embedded broadcast
  vdivps zmm0, zmm1, zmm2 {rz-sae}        ; embedded rounding
  vmaxss xmm1, xmm2, xmm3 {sae}           ; suppress all exceptions

반올림 모드

모드 효과
rn-sae 가장 가까운 것으로 반올림하고, 짝수에 연결하고, 모든 예외를 표시하지 않습니다.
rz-sae 0으로 반올림하고 모든 예외를 표시하지 않습니다.
rd-sae 반올림(음의 무한대)으로 모든 예외를 표시하지 않습니다.
ru-sae 양수 무한대로 반올림하여 모든 예외를 표시하지 않습니다.
sae 모든 예외를 표시하지 않습니다(반올림이 필요하지 않음).

참고 항목

Microsoft 매크로 어셈블러 참조
프로세서 제조업체 프로그래밍 설명서