Assembleur 80x86 | CMPXCHG8B |
---|---|
INTEL Pentium | CoMPare and eXCHanGe 8 Bytes |
Syntaxe
CMPXCHG8B registre, mémoire |
Description
L'instruction CMPXCHG8B compare un nombre de 64 bits formée par le couple registre de EDX:EAX avec une valeur 64 bits se trouvant en mémoire. Si ces valeurs sont équivalente, les 64 bits se trouvant en mémoire sont remplacés par les 64 bits formés par le couple de registre ECX:EBX. Dans le cas contraire, les 64 bits formés par les registres EDX:EAX sont remplacés par les 64 bits se trouvant en mémoire.
Algorithme
MODULE CMPXCHG8B(EDX:EAX, Opérande Destination) SI EDX:EAX = Opérande Destination ALORS drapeau ZF ← 1 Opérande Destination ← ECX:EBX SINON drapeau ZF ← 0 EDX:EAX ← Opérande Destination FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
CMPXCHG8B mem64 | 0Fh C7h /1 m64 | Compare la paire de registres EDX:EAX à l'emplacement mémoire de 64 bits. S'ils sont égale, alors fixe le drapeau de zéro à 1 et copie ECX:EBX dans l'emplacement mémoire. Autrement, copie l'emplacement mémoire dans EDX:EAX et efface le drapeau de zéro. |
Exceptions
Message | Mode réel | Virtuel 8086 | Mode protégé | Description |
---|---|---|---|---|
#UD(Opcode invalide) | X | X | X | L'instruction CMPXCHG8B n'est pas supporté, lequel est indiquer par le bit 8 du registre EDX de l'instruction CPUID, fonction 0000_0001h ou 8000_0001h. |
X | L'opérande est un registre. | |||
#SS(Pile non-canonique) | X | X | X | Une adresse mémoire dépasse la limite du segment de pile ou n'est pas canonique |
#GP(Protection général) | X | X | X | Une adresse mémoire dépasse la limite du segment de données ou n'est pas canonique |
X | L'opérande de destination n'est pas dans un segment non écrivable | |||
X | Un segment de données nulle est utilisé comme référence mémoire | |||
#PF(Faute de page) | X | X | Une faute de page résultat de l'exécution de l'instruction | |
#AC(Vérifie l'alignement) | X | X | Un désalignement de la référence mémoire est effectué quand une vérification d'alignement est activé |
Voir également
Instruction assembleur 80x86 - Instruction CMPXCHG
Références
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 236 à 238.
Dernière mise à jour : Samedi, le 2 août 2014