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. |