Assembly Intel x86¶
Instructions¶
CDQE: RAX ← sign-extend of EAX.
MOVSXD rcx,ecx: Move doubleword to quadword with sign-extension.
MOVABS rcx, <imm64>: to load arbitrary 64-bit constant into register and to load/store integer register from/to arbitrary constant 64-bit address is available.
ENDBR64: “End Branch 64 bit”, Terminate Indirect Branch in 64 bit. Related to Control flow Enforcement Technology (CET) hardening (-fcf-protection=branch option of GCC). Executed as NOP if the CPU doesn’t support CET.
Registers¶
64b register |
Lower 32b |
Lower 16b |
Lower 8b |
---|---|---|---|
rax |
eax |
ax |
al |
r9 |
r9d |
r9w |
r9b |
x86-64 ABI¶
System V AMD64 ABI (Linux):
First 6 arguments placed onto registers: RDI, RSI, RDX, RCX, R8, R9.
Microsoft x64 calling convention:
First 4 arguments placed onto registers: RCX, RDX, R8, R9.