x86-64 Architecture
x86-64 is the 64-bit extension of the x86 instruction-set architecture used by most desktop and server PCs. It defines the instructions, registers, operating modes, memory rules, and protection mechanisms that software and operating systems rely on when they run on an x86-64 processor.
itComputer architecture and hardware | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Intro
x86-64 Architecture
x86-64 is a 64-bit instruction-set architecture, or ISA, built as an extension of 32-bit x86. AMD introduced the architecture as AMD64. Intel implements a closely compatible form called Intel 64. Microsoft commonly calls the shared platform x64.
An ISA is the contract visible to software. It defines instructions, registers, data types, addressing, execution modes, exceptions, and system-control facilities. A processor's microarchitecture is the internal design that carries out that contract. Two processors can run the same x86-64 binary while using different pipelines, caches, execution units, and prediction strategies.
The software-visible machine
In 64-bit mode, x86-64 provides sixteen general-purpose registers. The inherited registers become 64 bits wide, such as RAX and RSP, and R8 through R15 add eight more. RIP identifies the next instruction, while RFLAGS records status and control bits. XMM and wider vector registers support floating-point and vector work when the relevant instruction-set extensions are available.
Registers have overlapping names. RAX names all 64 bits, EAX names the low 32 bits, AX names the low 16 bits, and AL names the low 8 bits. Writing a 32-bit general-purpose subregister clears the upper 32 bits of its 64-bit parent. An 8-bit or 16-bit write does not perform that clearing.
Instructions use variable-length encodings. Prefixes, an opcode, addressing fields, displacements, and immediate values can contribute to one instruction. The REX prefix selects 64-bit operand size and exposes the added registers for many legacy encodings. This density preserves compatibility, but it makes instruction boundaries harder to find without decoding from a known boundary.
Long mode and compatibility
Continue the course
This section is part of the paid course.
See pricing to subscribe, or log in if you already have access.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://docs.amd.com/v/u/en-US/40332_4.09_APM_PUB
Supports
- AMD64 programming model, registers, modes, instructions, memory, paging, protection, and exceptions
- Long mode and compatibility mode
- CPUID feature discovery
- AMD64 specification history used by the timeline
- Quiz answers about ISA, compatibility mode, canonical addresses, and feature detection
- https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html
Supports
- Intel 64 architecture, programming environment, instruction reference, and system programming
- Variable-length instruction encoding, REX, exceptions, privilege, paging, TLB behavior, CPUID, and virtualization
- Separation of architectural semantics from model-specific optimization
- Quiz answers about ISA, instruction boundaries, feature detection, and virtual CPU baselines
- https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/x64-architecture
Supports
- AMD64 and Intel 64 as the x64 platform
- Sixteen general-purpose registers and subregister naming
- Zero-extension after 32-bit register writes
- RIP-relative addressing and 64-bit instruction behavior
- Quiz answers about subregisters and addressing
- https://gitlab.com/x86-psABIs/x86-64-ABI
Supports
- System V AMD64 calling convention, stack, data layout, ELF, and relocations
- Argument-register order, red zone, alignment, and register preservation
- Quiz answers comparing platform ABIs
- https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions
Supports
- Microsoft x64 data layout, registers, calling, stack, and unwind rules
- Volatile and nonvolatile register classes
- Quiz answer about ABI-defined register preservation
- https://learn.microsoft.com/en-us/cpp/build/x64-calling-convention
Supports
- RCX, RDX, R8, and R9 argument registers
- Caller-provided shadow space and stack requirements
- Return values and register volatility
- Quiz answer comparing System V and Microsoft conventions
- https://docs.kernel.org/arch/x86/index.html
Supports
- Linux-specific boot, paging, kernel-stack, exception, and x86 behavior
- Reference-path rationale
- https://docs.kernel.org/arch/x86/x86_64/mm.html
Supports
- Four-level and five-level x86-64 virtual-memory layouts
- Implemented address-space limits
- Quiz answer about valid virtual addresses
- https://www.qemu.org/docs/master/system/qemu-cpu-models.html
Supports
- Named x86 CPU models, feature exposure, compatibility, and migration considerations
- Virtual CPU product description and reference rationale
- Quiz answer about migration baselines
- https://sourceware.org/binutils/docs/as/
Supports
- GNU assembler syntax, directives, machine selection, and x86-dependent options
- Reference-path rationale
- https://github.com/sindresorhus/awesome
Supports
- Required starting point for Awesome Links research
- https://github.com/Hack-Labs/awesome-assembler
Supports
- Discovery of NASM, FASM, Capstone, IDA Free, and Radare2
- Classification of assemblers, disassemblers, and debuggers
- https://www.nasm.us/
Supports
- NASM as a portable x86 assembler with platform code generation
- NASM Awesome Links rationale
- https://www.capstone-engine.org/documentation.html
Supports
- Embeddable disassembly API and x86 decoding support
- Capstone Awesome Links rationale
- https://book.rada.re/
Supports
- Binary analysis, disassembly, register and memory inspection, and debugging
- Radare2 Awesome Links rationale
- https://flatassembler.net/
Supports
- FASM x86 assembler and multi-pass assembly model
- FASM Awesome Links rationale
- https://hex-rays.com/ida-free
Supports
- IDA Free interactive disassembly and static binary analysis
- IDA Free Awesome Links rationale
- https://www.intel.com/pressroom/kits/quickrefyr.htm
Supports
- 1978 introduction and historical role of the 8086
- https://www.intel.com/pressroom/kits/quickrefyr.htm
Supports
- 1985 introduction of the Intel 386 processor
- https://www.kernel.org/doc/ols/2001/x86-64.pdf
Supports
- Early Linux x86-64 kernel, toolchain, and ABI work
- 2001 timeline milestone
- https://ir.amd.com/financial-information/sec-filings/content/0001193125-04-037179/d10k.htm
Supports
- April 2003 Opteron introduction
- Opteron support for 32-bit and 64-bit applications
- https://ir.amd.com/financial-information/sec-filings/content/0001193125-03-090748/dposam.htm
Supports
- September 2003 Athlon 64 introduction
- Desktop and mobile placement of AMD64 processors
- https://www.intc.com/filings-reports/all-sec-filings/content/0001193125-05-033162/d10k.htm
Supports
- June 2004 Xeon introduction with Intel Extended Memory 64 Technology
- Support for 32-bit and 64-bit operating systems and applications
- https://news.microsoft.com/source/2005/04/25/microsoft-raises-the-speed-limit-with-the-availability-of-64-bit-editions-of-windows-server-2003-and-windows-xp-professional/
Supports
- General availability date for Windows XP Professional x64 and Windows Server 2003 x64
- Native 64-bit and supported 32-bit application platform
- https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/64bitPorting/intro/intro.html
Supports
- 64-bit application support in Mac OS X 10.5
- 64-bit kernel introduction in Mac OS X 10.6 on supported hardware
- https://www.intel.com/content/www/us/en/products/details/processors/xeon.html
Supports
- Xeon placement in server and workstation x86-64 deployments
- Xeon Landscape entry
- https://www.amd.com/en/products/processors/server/epyc.html
Supports
- EPYC placement in server AMD64 deployments
- EPYC Landscape entry
- https://www.intel.com/content/www/us/en/products/details/processors/core.html
Supports
- Core placement in desktop and mobile Intel 64 deployments
- Intel Core Landscape entry
- https://www.amd.com/en/products/processors/desktops/ryzen.html
Supports
- Ryzen placement in desktop AMD64 deployments
- Ryzen Landscape entry
- https://www.gnu.org/software/binutils/
Supports
- Assembler, linker, and binary inspection toolchain
- GNU Binutils Landscape entry
- https://llvm.org/
Supports
- Compiler infrastructure and x86 target configuration
- LLVM Landscape entry
- https://visualstudio.microsoft.com/
Supports
- Microsoft x64 compiler, debugger, assembler, and linker tooling context
- Visual Studio Landscape entry
