Article by Ayman Alheraki on May 4 2026 12:09 AM
Modern x86-64 processors operate in several distinct modes that determine:
Instruction decoding
Register size and availability
Memory addressing behavior
Privilege and protection mechanisms
These modes exist primarily for backward compatibility and progressive feature expansion.
Origin: Intel 8086 Default mode after reset
16-bit execution environment
20-bit address bus → max 1 MB memory
Segmented memory (Segment:Offset)
No memory protection
No privilege levels
Physical Address = Segment × 16 + Offset
BIOS/firmware initialization
Early boot stages (bootloaders)
Introduced in: Intel 80386 Runs inside Protected Mode
Allows execution of real-mode programs (like DOS applications) within a protected environment.
Executes 16-bit code
Each VM86 task behaves like an isolated 8086 machine
Protected by the OS kernel
Critical for backward compatibility (legacy DOS software)
Used historically in early multitasking OSes
Introduced in: Intel 80286 (enhanced in 80386)
32-bit environment (on 80386 and later)
Access to up to 4 GB memory
Memory protection via segmentation and paging
Privilege levels (Ring 0 → Ring 3)
Hardware-enforced isolation
Descriptor tables (GDT, LDT)
Task switching (hardware-supported, rarely used today)
Paging (virtual memory)
This is the foundation of modern operating systems like:
Windows NT
Linux
Introduced by: AMD with AMD64 Later adopted by Intel as Intel 64
Long Mode is the modern 64-bit operating mode, and it has two sub-modes:
64-bit general-purpose registers (RAX, RBX, etc.)
Virtual address space up to 256 TB (current implementations)
Flat memory model (segmentation mostly disabled)
RIP-relative addressing
Mandatory paging
More registers (R8–R15)
Cleaner instruction encoding (REX prefix)
Improved calling conventions
Native 64-bit applications
Modern OS kernels and user-space
Allows 32-bit and 16-bit applications to run under a 64-bit OS.
Executes legacy code without modification
Uses 32-bit or 16-bit semantics
Still benefits from OS-level protection
No access to 64-bit registers
No 64-bit addressing
Low-level system control (firmware, power management)
Entered via SMI (System Management Interrupt)
Runs in isolated memory region (SMRAM)
Invisible to the operating system
Power management
Hardware control
Security mechanisms
Typical boot flow:
CPU starts in Real Mode
Bootloader switches to Protected Mode
OS enables Long Mode
Applications run in:
64-bit Mode
Compatibility Mode (if needed)
The coexistence of all these modes reflects a core philosophy of x86 design:
“Never break backward compatibility.”
This is why a modern CPU can still execute code written for a processor from 1978.
| Mode | Bitness | Memory Model | Protection | Modern Use |
|---|---|---|---|---|
| Real Mode | 16-bit | Segmented | None | Boot only |
| Virtual 8086 | 16-bit | Segmented (virtual) | Yes | Legacy |
| Protected Mode | 32-bit | Seg + Paging | Yes | Core OS |
| 64-bit Mode | 64-bit | Flat + Paging | Yes | Main usage |
| Compatibility Mode | 32/16 | Legacy inside 64-bit | Yes | Apps |
| SMM | N/A | Isolated | Firmware | Hidden |