Lesson 3.1: Addressing Modes in x86-64
Learning Objectives
- Identify and use various addressing modes (register indirect, base+index, etc.).
- Analyze how addressing modes translate into final memory addresses.
Prerequisites
- Basic assembly syntax.
- Familiarity with register usage for memory addressing.
Key Concepts
- Register Indirect:
mov rax, [rbx] - Base + Displacement:
mov rax, [rbx+8] - Base + Index * Scale + Displacement:
mov rax, [rbx + rcx*4 + 16]
Detailed Explanation
x86-64 Addressing Formula
The general formula for x86-64 memory addressing is:
Effective Address = Base + Index * Scale + Displacement
Where:
- Base: Any general-purpose register (optional)
- Index: Any general-purpose register except RSP (optional)
- Scale: 1, 2, 4, or 8 (only when Index is used)
- Displacement: Signed 8-bit or 32-bit offset (optional)
Additional content would continue here with detailed examples, exercises, and explanations...
Recommended Resources
- Intel Developer Manual, Vol. 2: Instruction Set Reference
- x86 Addressing Modes Reference