Day 1: Variables, Memory, and the Stack
📝 Concepts Covered
Today we explored how high-level C variables are translated into low-level machine instructions and memory operations.
1. The Stack and RBP
Local variables in C are stored on the Stack. The CPU uses the RBP (Base Pointer) register as a reference point to find these variables.
int a = 123;->mov DWORD PTR [rbp-4], 0x7b
2. Register Basics (x64)
Registers are small, fast storage locations inside the CPU.
RAX,RBX,RCX,RDX: General purpose 64-bit registers.EAX,EBX,ECX,EDX: The lower 32-bit halves of the above (used forintin C).
3. Data Sizes
The assembly instruction specifies how much data to move:
BYTE PTR: 1 byte (char)WORD PTR: 2 bytes (short)DWORD PTR: 4 bytes (int)QWORD PTR: 8 bytes (longor pointers)
4. Arithmetic Pattern
CPUs perform arithmetic using a Load-Modify-Store cycle:
- Load memory value into a register.
- Add/Sub the register value.
- Store the register result back into memory.
🛠 Exercises Completed
exo_1.c: Basic assignment and hex identification.exo_2.c: Arithmetic deconstruction (Theaddinstruction).exo_3.c: Data type sizes and memory offsets.