Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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. |
REPEREPZ |
Répétez l’opération de chaîne pendant que la comparaison est égale, limitée par le nombre dans (E)CX. |
REPNEREPNZ |
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