Partager via


Format d’instruction MASM

Syntaxe

Les instructions sont écrites dans le code source en fonction de cette syntaxe :

préfixeopérande-list mnemonique

Pour plus d’informations sur les définitions d’instructions, les options et l’encodage, consultez les manuels de programmation du fabricant du processeur. Certaines instructions et options d’instruction peuvent ne pas être prises en charge par l’assembleur de macros Microsoft.

Préfixe

Vous pouvez préfixer certaines instructions avec des mots clés qui définissent des options pour la façon dont l’instruction est encodée. Les REPmots clés et les REPNEREPNZ REPZinstructions REPEde chaîne sont utilisés avec des instructions de chaîne pour effectuer memcpy ou strlen des types d’opérations dans une seule instruction. Le LOCK mot clé effectue certaines opérations sur les opérandes de mémoire atomiques. Vous pouvez la combiner avec les XACQUIRE mots clés et XRELEASE effectuer des opérations HLE (Hardware Lock Elision) sur les processeurs pris en charge, ce qui permet un parallélisme transactionnel plus important dans certains cas.

Les préfixes restants contrôlent la façon dont les instructions AVX sont encodées. Les instructions AVX sont encodées à l’aide d’un VEX préfixe, qui s’affiche avant l’opcode. Il prend la place de certains préfixes d’instructions d’octets et d’octets de prospects opcode. De nombreuses instructions AVX sont également des instructions AVX-512, qui sont encodées à l’aide d’un EVEX préfixe qui prend en charge d’autres options. MASM tente d’encoder des instructions aussi compactement que possible, mais ces mots clés permettent davantage de contrôle sur l’encodage à utiliser avec une instruction particulière. Ils sont également utilisés pour forcer la génération de formulaires d’instruction AVX qui ont été introduits après l’instruction AVX-512 correspondante. Par exemple, vex vpdpbusd spécifie le formulaire AVX-VNNI des VPDPBUSD instructions plutôt que le formulaire AVX512-VNNI. Lorsqu’une instruction AVX s’affiche sans mot clé de préfixe explicite, l’encodage choisi dépend du paramètre d’encodage AVX actuel. La OPTION AVXENCODING directive vous permet de modifier ce paramètre.

Les VEX2options , et VEXEVEX les options VEX3sont disponibles dans Visual Studio 2019 version 16.7 et ultérieures.

Mot clé Utilisation
REP Répétez l’opération de chaîne par le nombre dans (E)CX.
REPE
REPZ
Répétez l’opération de chaîne pendant que la comparaison est égale, limitée par le nombre dans (E)CX.
REPNE
REPNZ
Répétez l’opération de chaîne pendant que la comparaison n’est pas égale, limitée par le nombre dans (E)CX.
LOCK Effectuez l’opération atomiquement sur un opérande de mémoire.
XACQUIRE Commencez une transaction HLE, souvent utilisée avec LOCK un préfixe.
XRELEASE Effectuez une transaction HLE, souvent utilisée avec LOCK un préfixe.
VEX Encoder une instruction AVX à l’aide d’un VEX préfixe.
VEX2 Encoder une instruction AVX à l’aide d’un préfixe de 2 octets VEX .
VEX3 Encoder une instruction AVX à l’aide d’un préfixe de 3 octets VEX .
EVEX Encoder une instruction AVX à l’aide d’un EVEX préfixe.

Mnémotechnique

Le mnémonique identifie une instruction particulière, qui détermine les préfixes et les modèles d’opérande autorisés.

Liste d’opérandes

La plupart des instructions utilisent une liste d’opérandes pour spécifier les opérandes de source et de destination explicites dans l’instruction. La liste d’opérandes peut contenir des références mémoire, des registres et des valeurs constantes. Chaque instruction permet uniquement à certains types d’opérandes d’apparaître à chaque position dans la liste d’opérandes. À l’exception MOVS des instructions et CMPS des instructions, un seul des opérandes peut être une référence mémoire ; tous les autres opérandes doivent être des références ou des constantes.

Options AVX-512

Certaines instructions AVX-512 permettent de spécifier d’autres options. Ces options sont les suivantes : masquage, masquage zéro, diffusion incorporée, arrondi incorporée et suppression des exceptions.

Le masquage permet d’appliquer une opération uniquement aux éléments sélectionnés d’un vecteur. Cette option est contrôlée en plaçant un registre de masque à partir de {k1} l’opérande {k7} de destination. Si le registre de masque est suivi {z}, tous les éléments non sélectionnés de la destination sont définis sur zéro. Cette alternative est appelée masquage zéro.

La diffusion incorporée permet d’appliquer une valeur scalaire en mémoire à tous les éléments d’un vecteur. Cette option est activée en ajoutant la taille de l’élément et le mot clé BCST à l’opérande de mémoire, ce qui est similaire à l’utilisation des PTR références de mémoire normales.

L’arrondi incorporé contrôle le mode d’arrondi pour une instruction à virgule flottante individuelle, sans avoir à définir et réinitialiser le mode global d’arrondi. Elle est activée en suivant l’instruction avec le mode arrondi placé entre accolades. Lorsqu’elle est activée, elle supprime également toutes les exceptions pour cette instruction uniquement. Les instructions à virgule flottante qui ne sont pas arrondies peuvent également supprimer toutes les exceptions à l’aide d’une option similaire.

  ; 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

Modes d’arrondi

Mode Effet
rn-sae Arrondi à la plus proche, les liens vers même, suppriment toutes les exceptions.
rz-sae Arrondi à zéro, supprime toutes les exceptions.
rd-sae Arrondir (vers l’infini négatif), supprimer toutes les exceptions.
ru-sae Arrondir (vers l’infini positif), supprimer toutes les exceptions.
sae Supprimez toutes les exceptions (sans arrondi nécessaire).

Voir aussi

Informations de référence sur Microsoft Macro Assembler
Manuels de programmation du fabricant de processeurs