Condividi tramite


Formato di istruzioni MASM

Sintassi

Le istruzioni vengono scritte nel codice sorgente in base a questa sintassi:

prefix mnemonic operand-list

Per informazioni su definizioni di istruzioni, opzioni e codifica, vedere i manuali di programmazione del produttore del processore. Alcune istruzioni e opzioni di istruzioni potrebbero non essere supportate dall'assembler macro Di Microsoft.

Prefisso

È possibile anteporre alcune istruzioni con parole chiave che impostano le opzioni per la codifica dell'istruzione. Le REPparole chiave , REPNEREPEREPZ, , e REPNZ vengono usate con istruzioni stringa per eseguire memcpy o strlen tipi di operazioni in un'unica istruzione. La LOCK parola chiave rende atomiche determinate operazioni sugli operandi di memoria. È possibile combinarla con le XACQUIRE parole chiave e XRELEASE per eseguire L'Elisione blocco hardware (HLE) sui processori supportati, che consente un maggiore parallelismo transazionale in determinati casi.

I prefissi rimanenti controllano la codifica delle istruzioni AVX. Le istruzioni AVX vengono codificate usando un VEX prefisso, che viene visualizzato prima del codice operativo. Prende il posto di determinati prefissi di istruzioni byte e byte opcode lead-in. Molte istruzioni AVX sono anche istruzioni AVX-512, codificate usando un EVEX prefisso che supporta più opzioni. MASM tenta di codificare le istruzioni nel modo più compatto possibile, ma queste parole chiave consentono un maggiore controllo sulla codifica da usare con una particolare istruzione. Vengono usati anche per forzare la generazione di moduli di istruzioni AVX introdotti dopo l'istruzione AVX-512 corrispondente. Ad esempio, vex vpdpbusd specifica il formato AVX-VNNI delle VPDPBUSD istruzioni anziché il modulo AVX512-VNNI. Quando viene visualizzata un'istruzione AVX senza una parola chiave con prefisso esplicito, la codifica scelta dipende dall'impostazione di codifica AVX corrente. La OPTION AVXENCODING direttiva consente di modificare questa impostazione.

Le VEX2opzioni , VEX3, VEXe EVEX sono disponibili in Visual Studio 2019 versione 16.7 e successive.

Parola chiave Utilizzo
REP Ripetere l'operazione stringa in base al conteggio in (E)CX.
REPE
REPZ
Ripetere l'operazione stringa mentre il confronto è uguale, limitato dal conteggio in (E)CX.
REPNE
REPNZ
Ripetere l'operazione stringa mentre il confronto non è uguale, limitato dal conteggio in (E)CX.
LOCK Eseguire l'operazione in modo atomico su un operando di memoria.
XACQUIRE Avviare una transazione HLE, usata più spesso con LOCK il prefisso .
XRELEASE Completare una transazione HLE, usata più spesso con LOCK il prefisso .
VEX Codificare un'istruzione AVX usando un VEX prefisso.
VEX2 Codificare un'istruzione AVX usando un prefisso a 2 byte VEX .
VEX3 Codificare un'istruzione AVX usando un prefisso a 3 byte VEX .
EVEX Codificare un'istruzione AVX usando un EVEX prefisso.

Mnemonico

Il mnemonico identifica una particolare istruzione, che determina i prefissi e i modelli di operando consentiti.

Elenco operandi

La maggior parte delle istruzioni usa un elenco di operandi per specificare gli operandi di origine e di destinazione espliciti per l'istruzione. L'elenco di operandi può contenere riferimenti alla memoria, registri e valori costanti. Ogni istruzione consente di visualizzare solo determinati tipi di operandi in ogni posizione nell'elenco degli operandi. Ad eccezione delle MOVS istruzioni e CMPS , solo uno degli operandi può essere un riferimento alla memoria. Tutti gli altri operandi devono essere riferimenti o costanti di registrazione.

Opzioni AVX-512

Alcune istruzioni AVX-512 consentono di specificare altre opzioni. Queste opzioni sono: mascheramento, mascheramento zero, trasmissione incorporata, arrotondamento incorporato ed eliminazione delle eccezioni.

La maschera consente di applicare un'operazione solo agli elementi selezionati di un vettore. Questa opzione è controllata inserendo un registro maschera da {k1} a {k7} dopo l'operando di destinazione. Se il registro maschera è seguito da {z}, tutti gli elementi non selezionati della destinazione vengono impostati su zero. Questa alternativa è nota come maschera zero.

Embedded Broadcast consente di applicare un valore scalare in memoria a tutti gli elementi di un vettore. Questa opzione è abilitata aggiungendo le dimensioni dell'elemento e la parola chiave BCST all'operando di memoria, simile all'uso di PTR per i riferimenti alla memoria normali.

L'arrotondamento incorporato controlla la modalità di arrotondamento per una singola istruzione a virgola mobile, senza dover impostare e reimpostare la modalità di arrotondamento globale. È abilitato seguendo l'istruzione con la modalità di arrotondamento racchiusa tra parentesi graffe. Se abilitata, elimina anche tutte le eccezioni solo per tale istruzione. Le istruzioni a virgola mobile che non arrotondano possono anche eliminare tutte le eccezioni usando un'opzione simile.

  ; 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

Modalità di arrotondamento

Modalità Effetto
rn-sae Arrotondare al più vicino, legarsi addirittura, eliminare tutte le eccezioni.
rz-sae Arrotondamento verso zero, eliminare tutte le eccezioni.
rd-sae Arrotondamento verso il basso (verso l'infinito negativo), eliminare tutte le eccezioni.
ru-sae Arrotondamento (verso l'infinito positivo), elimina tutte le eccezioni.
sae Elimina tutte le eccezioni (nessun arrotondamento necessario).

Vedi anche

Riferimento a Microsoft Macro Assembler
Manuali di programmazione del produttore del processore