Bagikan melalui


x64 Instructions

Sebagian besar instruksi x86 terus berlaku untuk x64 dalam mode 64-bit. Beberapa operasi yang jarang digunakan tidak lagi didukung dalam mode 64-bit, seperti:

  • instruksi aritmatika desimal berkode biner: AAA, AAD, AAM, AAS, DAA, DAS

  • BOUND

  • PUSHAD dan POPAD

  • sebagian besar operasi yang menangani register segmen, seperti PUSH DS dan POP DS. (Operasi yang menggunakan register segmen FS atau GS masih valid.)

Set instruksi x64 mencakup penambahan terbaru ke x86, seperti SSE 2. Program yang dikompilasi untuk x64 dapat dengan bebas menggunakan instruksi ini.

Data Transfer

x64 menyediakan varian baru dari instruksi MOV yang dapat menangani konstanta langsung 64-bit atau alamat memori.

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 juga menyediakan instruksi baru untuk memperpanjang operan 32-bit hingga 64 bit.

MOVSXD

r1, r/m

Pindahkan DWORD dengan ekstensi tanda tangan ke QWORD.

Operasi MOV biasa menjadi subregister 32-bit secara otomatis nol diperpanjang hingga 64 bit, sehingga tidak ada instruksi 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

Pindahkan nilai 128-bit (belum tentu diselaraskan) untuk mendaftar, atau sebaliknya.

Konversi Data

CDQE

Convert dword (eax) to qword (rax).

CQO

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

Manipulasi String

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.