Бөлісу құралы:


x64 Instructions

Большинство инструкций x86 продолжают быть допустимыми для x64 в 64-разрядном режиме. Некоторые редко используемые операции больше не поддерживаются в 64-разрядном режиме, например:

  • арифметические инструкции с двоичным кодом: AAA, AAD, AAM, AAS, DAA, DAS

  • BOUND

  • PUSHAD и POPAD

  • большинство операций, которые касаются регистров сегментов, таких как PUSH DS и POP DS. (Операции, использующие регистры сегментов FS или GS, по-прежнему допустимы.)

Набор инструкций x64 включает последние дополнения к x86, например SSE 2. Программы, скомпилированные для x64, могут свободно использовать эти инструкции.

Передача данных

X64 предоставляет новые варианты инструкции MOV, которая может обрабатывать 64-разрядные константы или адреса памяти.

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 также предоставляет новую инструкцию для подписывания 32-разрядных операндов до 64-разрядных.

MOVSXD

r1, r/m

Переместите DWORD с расширением знака в QWORD.

Обычные операции MOV в 32-разрядные подрегистры автоматически расширяются до 64 бит, поэтому инструкции 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

Переместите 128-разрядное значение (не обязательно выровнено) для регистрации или наоборот.

Преобразование данных

CDQE

Convert dword (eax) to qword (rax).

CQO

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

Обработка строк

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.