Condividi tramite


x64 Instructions

La maggior parte delle istruzioni x86 continua a essere valida per x64 in modalità a 64 bit. Alcune operazioni usate raramente non sono più supportate in modalità a 64 bit, ad esempio:

  • Istruzioni aritmetiche decimali codificate in formato binario: AAA, AAD, AAM, AAS, DAA, DAS

  • BOUND

  • PUSHAD e POPAD

  • la maggior parte delle operazioni che hanno a che fare con i registri di segmento, ad esempio PUSH DS e POP DS. Le operazioni che usano i registri dei segmenti FS o GS sono ancora valide.

Il set di istruzioni x64 include aggiunte recenti a x86, ad esempio SSE 2. I programmi compilati per x64 possono usare liberamente queste istruzioni.

Trasferimento dati

X64 fornisce nuove varianti dell'istruzione MOV in grado di gestire costanti immediate a 64 bit o indirizzi di memoria.

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.

X64 fornisce anche una nuova istruzione per l'estensione degli operandi a 32 bit a 64 bit.

MOVSXD

r1, r/m

Spostare DWORD con l'estensione del segno in QWORD.

Le normali operazioni MOV in sottoregistratori a 32 bit si estendono automaticamente a 64 bit, quindi non esiste alcuna istruzione 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

Spostare il valore a 128 bit (non necessariamente allineato) per registrare o viceversa.

Conversione dei dati

CDQE

Convert dword (eax) to qword (rax).

CQO

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

Manipolazione delle stringhe

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.