Partilhar via


Instruções x64

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

  • LIMITE

  • 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 livremente estas instruções.

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

Mova o conteúdo em um endereço de 64 bits para rax.

MOV

m, rax

Mova o conteúdo do rax para o endereço de 64 bits.

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

MOVSXD

r1, r/m

Mova DWORD com extensão de sinal para QWORD.

As operações MOV comuns em subregistros de 32 bits se estendem automaticamente para 64 bits, portanto, não há nenhuma instrução MOVZXD.

Duas instruções SSE podem ser usadas para mover valores de 128 bits (como GUIDs) da memória para um registro n xmm ou vice-versa.

MOVDQA

r1/m, r2/m

Mova o valor alinhado de 128 bits para xmmn register ou 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

Converter dword (eax) em qword (rax).

CQO

converter qword (rax) em oword (rdx:rax).

Manipulação de cadeia de caracteres

MOVSQ

Mova qword de rsi para rdi.

CMPSQ

Compare qword em rsi com rdi.

SCASQ

Examine qword em rdi. Compara qword em rdi com rax.

LODSQ

Carregue qword de rsi em rax.

STOSQ

Armazene qword para rdi de rax.