大部分的 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. |