Assembly Intel x86


  • 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.


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.