Instructions x64

La plupart des instructions x86 continuent d’être valides pour x64 en mode 64 bits. Certaines opérations rarement utilisées ne sont plus prises en charge en mode 64 bits, telles que :

  • instructions arithmétiques décimales à code binaire : AAA, AAD, AAM, AAS, DAA, DAS

  • LIÉ

  • PUSHAD et POPAD

  • la plupart des opérations qui traitaient des registres de segments, telles que PUSH DS et POP DS. (Les opérations qui utilisent les registres de segmentS FS ou GS sont toujours valides.)

Le jeu d’instructions x64 inclut des ajouts récents au x86, tels que SSE 2. Les programmes compilés pour x64 peuvent utiliser librement ces instructions.

Transfert de données

Le x64 fournit de nouvelles variantes de l’instruction MOV qui peuvent gérer des constantes immédiates 64 bits ou des adresses mémoire.

MOV

r,#n

r = #n

MOV

rax, m

Déplacer le contenu à l’adresse 64 bits vers rax.

MOV

m, rax

Déplacez le contenu de rax vers l’adresse 64 bits.

Le x64 fournit également une nouvelle instruction pour signer-étendre les opérandes 32 bits à 64 bits.

MOVSXD

r1, r/m

Déplacez DWORD avec l’extension de signe vers QWORD.

Les opérations MOV ordinaires dans les sous-inscriptions 32 bits s’étendent automatiquement à zéro jusqu’à 64 bits, il n’existe donc aucune instruction MOVZXD.

Deux instructions SSE peuvent être utilisées pour déplacer des valeurs 128 bits (telles que des GUID) de la mémoire vers un registre xmmn ou vice versa.

MOVDQA

r1/m, r2/m

Déplacez la valeur alignée 128 bits vers xmmn register, ou inversement.

MOVDQU

r1/m, r2/m

Déplacez la valeur 128 bits (pas nécessairement alignée) pour l’inscrire, ou vice versa.

Conversion de données

CDQE

Convertissez dword (eax) en qword (rax).

CQO

convertir qword (rax) en oword (rdx:rax).

Manipulation de chaîne

MOVSQ

Déplacez qword de rsi vers rdi.

CMPSQ

Comparez qword à rsi avec rdi.

SCASQ

Scannez qword à rdi. Compare qword à rdi à rax.

LODSQ

Chargez qword de rsi dans rax.

STOSQ

Stockez qword dans rdi à partir de rax.