Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Syntax
Anweisungen werden gemäß dieser Syntax im Quellcode geschrieben:
Informationen zu Anleitungsdefinitionen, Optionen und Codierung finden Sie in den Programmierhandbüchern des Prozessorherstellers. Einige Anweisungen und Anleitungsoptionen werden möglicherweise nicht vom Microsoft-Makroassembler unterstützt.
Präfix
Sie können einigen Anweisungen Schlüsselwörter voranstellen, die Optionen für die Codierung der Anweisung festlegen. Die REPSchlüsselwörter , REPE, , REPZund REPNZ REPNESchlüsselwörter werden mit Zeichenfolgenanweisungen verwendet, um memcpy Vorgänge in einer einzigen Anweisung auszuführen oder strlen zu verwenden. Das LOCK Schlüsselwort macht bestimmte Vorgänge für Speicheropernden atomar. Sie können es mit den XACQUIRE Schlüsselwörtern XRELEASE kombinieren, um Hardware Lock Elision (HLE) auf unterstützten Prozessoren durchzuführen, was in bestimmten Fällen eine größere transaktionsbasierte Parallelität zulässt.
Die übrigen Präfixe steuern, wie AVX-Anweisungen codiert werden. AVX-Anweisungen werden mit einem VEX Präfix codiert, das vor dem Opcode angezeigt wird. Es erfolgt an der Stelle bestimmter Byte-Anweisungspräfixe und opcode lead-in Bytes. Viele AVX-Anweisungen sind auch AVX-512-Anweisungen, die mit einem EVEX Präfix codiert werden, das weitere Optionen unterstützt. MASM versucht, Anweisungen so kompakt wie möglich zu codieren, aber diese Schlüsselwörter ermöglichen mehr Kontrolle darüber, welche Codierung mit einer bestimmten Anweisung verwendet werden soll. Sie werden auch verwendet, um die Generierung von AVX-Anweisungsformularen zu erzwingen, die nach der entsprechenden AVX-512-Anweisung eingeführt wurden. Gibt beispielsweise vex vpdpbusd die AVX-VNNI-Form der VPDPBUSD Anweisungen anstelle des AVX512-VNNI-Formulars an. Wenn eine AVX-Anweisung ohne ein explizites Präfixschlüsselwort angezeigt wird, hängt die gewählte Codierung von der aktuellen AVX-Codierungseinstellung ab. Mit OPTION AVXENCODING der Direktive können Sie diese Einstellung ändern.
Die VEX2Optionen und Optionen VEX3VEXEVEX sind in Visual Studio 2019, Version 16.7 und höher, verfügbar.
| Schlüsselwort | Verbrauch |
|---|---|
REP |
Wiederholen Sie den Zeichenfolgenvorgang durch die Anzahl in (E)CX. |
REPEREPZ |
Wiederholen Sie den Zeichenfolgenvorgang, während der Vergleich gleich ist, begrenzt durch die Anzahl in (E)CX. |
REPNEREPNZ |
Wiederholen Sie den Zeichenfolgenvorgang, während der Vergleich nicht gleich ist, begrenzt durch die Anzahl in (E)CX. |
LOCK |
Führen Sie den Vorgang atomar auf einem Speicheropernden aus. |
XACQUIRE |
Beginnen Sie eine HLE-Transaktion, die am häufigsten mit LOCK präfix verwendet wird. |
XRELEASE |
Abschließen einer HLE-Transaktion, die am häufigsten mit LOCK Präfix verwendet wird. |
VEX |
Codieren Sie eine AVX-Anweisung mithilfe eines VEX Präfixes. |
VEX2 |
Codieren Sie eine AVX-Anweisung mithilfe eines 2-Byte-Präfixes VEX . |
VEX3 |
Codieren Sie eine AVX-Anweisung mithilfe eines 3-Byte-Präfixes VEX . |
EVEX |
Codieren Sie eine AVX-Anweisung mithilfe eines EVEX Präfixes. |
Mnemonisch
Das Mnemonic identifiziert eine bestimmte Anweisung, die die zulässigen Präfixe und Operandenmuster bestimmt.
Operandenliste
Die meisten Anweisungen verwenden eine Operandenliste, um die expliziten Quell- und Zielopernden für die Anweisung anzugeben. Die Operandenliste kann Speicherverweise, Register und Konstantenwerte enthalten. Jede Anweisung ermöglicht nur bestimmte Operandentypen, die an jeder Position in der Operandenliste angezeigt werden. Mit Ausnahme der MOVS Anweisungen CMPS kann nur einer der Operanden ein Speicherverweis sein. Alle anderen Operanden müssen Verweise oder Konstanten registrieren.
AVX-512-Optionen
Einige AVX-512-Anweisungen ermöglichen die Angabe weiterer Optionen. Diese Optionen sind: Maskieren, Nullmasken, eingebettete Übertragung, eingebettete Rundung und Ausnahmeunterdrückung.
Mit der Maskierung kann ein Vorgang nur auf ausgewählte Elemente eines Vektors angewendet werden. Diese Option wird gesteuert, indem ein Maskenregister von {k1} bis nach {k7} dem Zielopernden platziert wird. Wenn auf das Maskenregister folgt {z}, werden alle nicht ausgewählten Elemente des Ziels auf Null festgelegt. Diese Alternative wird als Nullmaske bezeichnet.
Embedded Broadcast ermöglicht es, einen skalaren Wert im Arbeitsspeicher auf alle Elemente eines Vektors anzuwenden. Diese Option ist durch Hinzufügen der Elementgröße und des Schlüsselworts BCST zum Speicheropernden aktiviert, der der Verwendung für PTR normale Speicherverweise ähnelt.
Eingebettetes Runden steuert den Rundungsmodus für eine einzelne Gleitkommaanweisung, ohne den globalen Rundungsmodus festlegen und zurücksetzen zu müssen. Sie ist aktiviert, indem Sie die Anweisung mit dem in geschweiften Klammern eingeschlossenen Rundungsmodus ausführen. Wenn diese Option aktiviert ist, werden auch alle Ausnahmen nur für diese Anweisung unterdrückt. Gleitkommaanweisungen, die nicht runden, können auch alle Ausnahmen mithilfe einer ähnlichen Option unterdrücken.
; 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
Rundungsmodi
| Mode | Auswirkung |
|---|---|
rn-sae |
Rundet auf die nächste, Bindungen mit geraden, unterdrücken alle Ausnahmen. |
rz-sae |
Auf Null runden, alle Ausnahmen unterdrücken. |
rd-sae |
Aufrunden (in Richtung negativer Unendlichkeit) unterdrücken sie alle Ausnahmen. |
ru-sae |
Aufrunden (in Richtung positiver Unendlichkeit) unterdrücken Sie alle Ausnahmen. |
sae |
Alle Ausnahmen unterdrücken (keine Rundung erforderlich). |
Siehe auch
Referenz zum Microsoft-Makroassembler
Programmierungshandbücher von Prozessorherstellern