Compartilhar via


x64 Instructions

A maioria das instruções x86 continua sendo válida para x64 no modo de 64 bits. Algumas operações raramente usadas não têm mais suporte no modo de 64 bits, como:

  • instruções aritméticas decimal codificadas em binário: AAA, AAD, AAM, AAS, DAA, DAS

  • BOUND

  • PUSHAD e POPAD

  • a maioria das operações que lidavam com registros de segmento, como PUSH DS e POP DS. (As operações que usam os registros de segmento FS ou GS ainda são válidas.)

O conjunto de instruções x64 inclui adições recentes ao x86, como SSE 2. Os programas compilados para x64 podem usar essas instruções livremente.

Transferência de dados

O x64 fornece novas variantes da instrução MOV que podem lidar com constantes imediatas de 64 bits ou endereços de memória.

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.

O x64 também fornece uma nova instrução para estender operandos de 32 bits para 64 bits.

MOVSXD

r1, r/m

Mover DWORD com extensão de sinal para QWORD.

As operações MOV comuns em subregistros de 32 bits são automaticamente zero estendidas para 64 bits, portanto, não há nenhuma instrução 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

Mova o valor de 128 bits (não necessariamente alinhado) para registrar ou vice-versa.

Conversão de dados

CDQE

Convert dword (eax) to qword (rax).

CQO

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

Manipulação de cadeia de caracteres

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.