共用方式為


x64 Instructions

大部分的 x86 指令在 64 位模式中繼續對 x64 有效。 64 位元模式不再支援一些很少使用的作業,例如:

  • 二進位編碼十進制算術指令:AAA、AAD、AAM、AAS、DAA、DAS

  • BOUND

  • 蒲蘇和 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。

對 32 位子暫存器的普通 MOV 操作會自動零擴展到 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.