Partager via


x64 Instructions

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, par exemple :

  • Instructions arithmétiques au code binaire : AAA, AAD, AAM, AAS, DAA, DAS

  • BOUND

  • PUSHAD et POPAD

  • la plupart des opérations qui traitent 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 librement utiliser 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

Move contents at 64-bit address to rax.

MOV

m, rax

Move contents of rax to 64-bit address.

Le x64 fournit également une nouvelle instruction permettant d’étendre les opérandes 32 bits à 64 bits.

MOVSXD

r1, r/m

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

Les opérations MOV ordinaires en sous-inscriptions 32 bits s’étendent automatiquement à 64 bits. Il n’existe donc aucune instruction MOVZXD.

Two SSE instructions can be used to move 128-bit values (such as GUIDs) from memory to an xmmn register or vice versa.

MOVDQA

r1/m, r2/m

Move 128-bit aligned value to xmmn register, or vice versa.

MOVDQU

r1/m, r2/m

Déplacez la valeur 128 bits (pas nécessairement alignée) pour inscrire, ou inversement.

Conversion de données

CDQE

Convert dword (eax) to qword (rax).

CQO

convert qword (rax) to oword (rdx:rax).

Manipulation de chaînes

MOVSQ

Move qword from rsi to rdi.

CMPSQ

Compare qword at rsi with rdi.

SCASQ

Scan qword at rdi. Compares qword at rdi to rax.

LODSQ

Load qword from rsi into rax.

STOSQ

Store qword to rdi from rax.