> For the complete documentation index, see [llms.txt](https://isubasinghe.gitbook.io/isithas-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://isubasinghe.gitbook.io/isithas-wiki/software_engineering/languages/x86.md).

# x86 Assembly

## Basic idea

The instruction-set family Intel introduced with the 8086 (1978) and progressively extended (IA-32, x86-64). A CISC ISA: variable-length encoding, two-operand instructions, many addressing modes, dense binary code.

## Key facts

* Word sizes: 16-bit (real), 32-bit (IA-32), 64-bit (x86-64 / AMD64).
* 16 general-purpose registers in x86-64: `rax`, `rbx`, ..., `r8`-`r15`.
* Call conventions (System V): args in `rdi, rsi, rdx, rcx, r8, r9`; return in `rax`.
* Two-operand: `mov dst, src` (Intel syntax) / `mov src, dst` (AT\&T syntax).
* Memory model: x86-TSO (only store→load can reorder).
