Jeu d'instruction x86 - Définition et Explications

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

Le jeu d'instructions du x86 a subi de nombreux changements au cours du temps. La plupart d'entre eux ne sont que des ajouts au jeu d'instruction initial afin d'apporter de nouvelles fonctionnalités.

Jeu d'instruction sur les entiers

Ceci est le jeu d'instruction complet pour les processeurs 8086-8088 et la plupart, si ce n'est toutes ces instructions sont accessibles en mode 32-bit. Elles opèrent alors sur les registres et valeurs 32 bits (eax, ebx, etc.) en lieu et place de leur contrepartie en 16 bits (ax, bx, etc.).

Instructions originale des 8086/8088

Nom Sens (SENS (Strategies for Engineered Negligible Senescence) est un projet scientifique qui a pour but...) Traduction Notes
AAA ASCII Adjust AL after Addition Ajuste le registre AL après addition (L'addition est une opération élémentaire, permettant notamment de décrire la...) (mode ASCII) Utilisé avec le codage (De façon générale un codage permet de passer d'une représentation des...) BCD non compacté
AAD ASCII Adjust AX after Division Ajuste le registre AX après division (La division est une loi de composition qui à deux nombres associe le produit du premier par...) (mode ASCII) Utilisé avec le codage BCD non compacté, bogué dans le jeu d'instruction original, mais « réparé » dans le NEC V20, causant de nombreuses incompatibilités
AAM ASCII Adjust AX after Multiplication Ajuste le registre AX après multiplication (La multiplication est l'une des quatre opérations de l'arithmétique élémentaire...) (mode ASCII) Utilisé avec le codage BCD non compacté
AAS ASCII Adjust AL after Subtraction Ajuste le registre AL après soustraction (La soustraction est l'une des opérations basiques de l'arithmétique. La soustraction...) (mode ASCII) Utilisé avec le codage BCD non compacté
ADC Add with Carry Ajoute deux entiers, plus le drapeau de retenue Le résultat remplace le premier opérande
ADD Add Ajoute deux entiers Le résultat remplace le premier opérande
AND Logical AND Effectue un ET logique (La logique (du grec logikê, dérivé de logos (λόγος),...) des opérandes Le résultat remplace le premier opérande
CALL Call Procedure Appelle une procédure
CBW Convert Byte to Word Convertit un octet (L’octet est une unité de mesure en informatique mesurant la quantité de...) en mot Le registre AL est étendu à AX
CLC Clear Carry Flag Met le drapeau de retenue à zéro (Le chiffre zéro (de l’italien zero, dérivé de l’arabe sifr,...)
CLD Clear Direction Flag Met le drapeau de direction à zéro
CLI Clear Interrupt Flag Met le drapeau d'interruption à zéro
CMC Complement Carry Flag Inverse (En mathématiques, l'inverse d'un élément x d'un ensemble muni d'une loi de...) le drapeau de retenue
CMP Compare Compare deux entiers (de façon arithmétique) Positionne les drapeaux en fonction de la différence entre les opérandes
CMPSzz Compare Strings Compare un octet/mot de deux chaînes Mnémoniques : CMPS, CMPSB, CMPSW
CWD Convert Word to Doubleword Convertit un mot en double mot Le registre AX est étendu à DX:AX
DAA Decimal Adjust AL after Addition Ajuste le registre AL après addition (mode décimal) Utilisé avec le codage BCD compacté
DAS Decimal Adjust AL after Subtraction Ajuste le registre AL après soustraction (mode décimal) Utilisé avec le codage BCD compacté
DEC Decrement by 1 Décrémente un entier Ôte un de l'opérande
DIV Unsigned Divide Divise par un entier non signé Le dividende est le registre AX/DX:AX, le quotient est écrit dans AL/AX et le reste dans AH/DX
ESC Escape Utilisé avec l'unité de calcul en virgule flottante
HLT Halt Entre en état d'arrêt
IDIV Signed Divide Divise par un entier signé Le dividende est le registre AX/DX:AX, le quotient est écrit dans AL/AX et le reste dans AH/DX
IMUL Signed Multiply Multiplie par un entier signé Le facteur est le registre AL/AX et le produit est écrit dans AX/DX:AX
IN Input from Port Lit depuis un port La destination est le registre AL/AX
INC Increment by 1 Incrémente un entier Ajoute un à l'opérande
INT Call to Interrupt Procedure Appelle l'interruption identifiée par l'opérande
INTO Call to Interrupt Procedure if Overflow Appelle l'interruption de débordement si le drapeau de débordement est à un
IRET Interrupt Return Revient d'une interruption
Jcc Jump if Condition Is Met Saute si une condition est vérifiée Mnémoniques : JA, JAE, JB, JBE, JC, JCXZ, JE, JG, JGE, JL, JLE, JNA, JNAE, JNB, JNBE, JNC, JNE, JNG, JNGE, JNL, JNLE, JNO, JNP, JNS, JNZ, JO, JP, JPE, JPO, JS, JZ
JMP Jump Saute (inconditionnel)
LAHF Load Flags into AH Copie le registre des drapeaux dans le registre AH
LDS Load DS with Far Pointer Charge (La charge utile (payload en anglais ; la charge payante) représente ce qui est effectivement...) un pointeur de type far (lointain) dans le registre DS (segment) et l'opérande (décalage)
LEA Load Effective Address Charge l'adresse (Les adresses forment une notion importante en communication, elles permettent à une entité de...) du second opérande dans le premier
LES Load ES with Far Pointer Charge un pointeur de type far (lointain) dans le registre ES (segment) et l'opérande (décalage)
LOCK Assert LOCK# Signal ( Termes généraux Un signal est un message simplifié et généralement codé. Il existe...) Prefix Préfixe verrouillant les bus pour les prochaines instructions Utilisé pour les plates-formes multiprocesseurs.
LODSzz Load String Copie un octet/mot d'une chaîne (Le mot chaîne peut avoir plusieurs significations :) La destination est le registre AL/AX. Mnémoniques : LODS, LODSB, LODSW
LOOPcc Loop According to Counter Décrémente le compteur et saute si une condition est vérifiée Le compteur est le registre CX. Mnémoniques : LOOP, LOOPE, LOOPNE, LOOPNZ, LOOPZ
MOV Move Copie le second opérande dans le premier
MOVSzz Move from String to String Copie un octet/mot d'une chaîne vers une autre Mnémoniques : MOVS, MOVSB, MOVSW
MUL Unsigned Multiply Multiplie par un entier non signé Le facteur est le registre AL/AX et le produit est écrit dans AX/DX:AX
NEG Two's Complement Negation Calcule l'opposé ( En mathématique, l'opposé d’un nombre est le nombre tel que, lorsqu’il est à...) de l'opérande (négation par complément à deux) Le résultat remplace l'opérande
NOP No Operation Ne fait rien
NOT One's Complement Negation Effectue un NON logique (négation par complément à un) Le résultat remplace l'opérande
OR Logical Inclusive OR Effectue un OU logique inclusif des opérandes Le résultat remplace le premier opérande
OUT Output to Port Écrit vers un port La source est le registre AX/AL
POP Pop a Value from the Stack Dépile vers le registre opérande
POPF Pop Flags Register from the Stack Dépile vers le registre des drapeaux
PUSH Push a Value onto the Stack Empile le registre opérande
PUSHF Push Flags Register onto the Stack Empile le registre des drapeaux
RCL Rotate through Carry Left Effectue une rotation à gauche via par le drapeau de retenue
RCR Rotate through Carry Right Effectue une rotation à droite via par le drapeau de retenue
REPcc Repeat String Operation Prefix Préfixe de répétition d'une opération sur une chaîne Mnémoniques : REP, REPE, REPNE, REPNZ, REPZ
RET Return from Procedure Revient d'une procédure
ROL Rotate Left Effectue une rotation vers la gauche
ROR Rotate Right Effectue une rotation vers la droite
SAHF Store (Le terme tore a essentiellement deux acceptions distinctes, suivant les usages :) AH into Flags Copie le registre AH dans le registre des drapeaux
SAL Shift Arithmectically Left Décalage arithmétique (L'arithmétique est une branche des mathématiques qui comprend la partie de la...) vers la gauche Même instruction que SHL
SAR Shift Arithmectically Right Décalage arithmétique vers la droite À ne pas confondre avec SHR
SBB Integer Subtraction with Borrow Soustrait deux entiers, ajoute le drapeau de retenue Le résultat remplace le premier opérande
SCASzz Scan String Compare un octet/mot d'une chaîne La référence est le registre AL/AX. Mnémoniques : SCAS, SCASB, SCASW
SHL Shift Left Décalage logique à gauche Même instruction que SAL
SHR Shift Right Décalage logique à droite À ne pas confondre avec SAR
STC Set Carry Flag Met le drapeau de retenue à un
STD Set Direction Flag Met le drapeau de direction à un
STI Set Interrupt Flag Met le drapeau d'interruption à un
STOSzz Store in String Copie dans un octet/mot d'une chaîne La source est le registre AL/AX. Mnémoniques : STOS, STOSB, STOSW
SUB Subtract (Le Tract ou flyer est une publicité, souvent en couleurs, qui sert à annoncer un événement...) Soustrait deux entiers Le résultat remplace le premier opérande
TEST Logical Compare Compare deux opérandes (de façon logique) Positionne les drapeaux en fonction du résultat du ET logique entre les opérandes
WAIT Wait Attend tant que la broche BUSY du processeur (Le processeur, ou CPU (de l'anglais Central Processing Unit, « Unité centrale de...) est inactive Utilisé avec l'unité de calcul en virgule flottante
XCHG Exchange Permute le contenu des deux opérandes
XLAT Table Look-up Translation Translation de donnée (Dans les technologies de l'information, une donnée est une description élémentaire,...) entre des tables
XOR Logical Exclusive OR Effectue un OU logique exclusif des opérandes Le résultat remplace le premier opérande

Ajouts aux processeurs spécifiques

Ajouts aux processeurs 80186/80188

BOUND, ENTER, INSB, INSW, LEAVE, OUTSB, OUTSW, POPA, PUSHA, PUSHW

Ajouts au processeur 80286

ARPL, CLTS, LAR, LGDT, LIDT, LLDT, LMSW, LOADALL, LSL, LTR, SGDT, SIDT, SLDT, SMSW, STR, VERR, VERW

Ajouts au processeur 80386

BSF, BSR, BT, BTC, BTR (BTR est l'abréviation du terme russe de Bronetransporter (???????????????? - ????????????? ??????...), BTS, CDQ, CMPSD, CWDE, INSD, IRETD, IRETDF, IRETF, JECXZ, LFS, LGS, LSS, LODSD, LOOPD, LOOPED, LOOPNED, LOOPNZD, LOOPZD, MOVSD, MOVSX, MOVZX, OUTSD, POPAD, POPFD, PUSHAD, PUSHD, PUSHFD, SCASD, SETA, SETAE, SETB, SETBE, SETC, SETE, SETG, SETGE, SETL, SETLE, SETNA, SETNAE, SETNB, SETNBE, SETNC, SETNE, SETNG, SETNGE, SETNL, SETNLE, SETNO, SETNP, SETNS, SETNZ, SETO, SETP, SETPE, SETPO, SETS, SETZ, SHLD, SHRD, STOSD

Ajouts au processeur 80486

BSWAP, CMPXCHG, CPUID, INVD, INVLPG, RSM, WBINVD, XADD

Ajouts au processeur Pentium

CMPXCHG8B, RDMSR, RDPMC*, RDTSC, WRMSR

  • RDPMC a été introduit avec le processeur Pentium Pro et le processeur Pentium MMX

Ajouts au processeur Pentium Pro

CMOVA, CMOVAE, CMOVB, CMOVB, CMOVE, CMOVG, CMOVGE, CMOVL, CMOVLE, CMOVNA, CMOVNAE, CMOVNB, CMOVNBE, CMOVNC, CMOVNE, CMOVNG, CMOVNGE, CMOVNL, CMOVNLE, CMOVNO, CMOVNP, CMOVNS, CMOVNZ, CMOVO, CMOVP, CMOVPE, CMOVPO, CMOVS, CMOVZ, SYSENTER, SYSEXIT, UD2

Ajouts au processeur AMD K7

  • SYSCALL - Fonctionnalité spécifique au processeur AMD équivalente à l'instruction SYSENTER.
  • SYSRET - Fonctionnalité spécifique au processeur AMD équivalente à l'instruction SYSEXIT.

Ajouts au processeur Pentium III

Fonctionnalités SSE
MASKMOVQ, MOVNTPS, MOVNTQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE (Mise en cache et ordonnancement mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir...) (Memory Ordering))

Ajouts au processeur Pentium 4

Fonctionnalités SSE2

CLFLUSH, LFENCE, MASKMOVDQU, MFENCE, MOVNTDQ, MOVNTI, MOVNTPD, PAUSE (for Cacheability)

Ajouts au processeur Pentium 4 supporant les fonctionnalités SSE3

Processeur supportant l'Hyper-Threading (Hyper-Threading (HT, en français Hyper-Flots ou Hyper-Flux) est le nom donné par Intel à son...)
Fonctionnalités SSE3
MONITOR (Le cuirassé Monitor de 1862 est un bateau de l'US Navy qui doit sa célébrité au fait qu'il est...), MWAIT (Pour la synchronisation des threads)

Ajouts au processeur Pentium 4 6x2

VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUNCH, VMRESUME, VMXOFF, VMXON (instructions VMX)

Ajouts au processeurs x86-64

CMPXCHG16B

Page générée en 0.055 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique