What's Next?
Congratulations
You have completed all 15 lessons. You now understand x86_64 registers, memory addressing, arithmetic, control flow, functions, and string manipulation in assembly.
That is a real accomplishment. x86_64 assembly is one of the most complex instruction sets in use today, and you have built a solid foundation.
What to Explore Next
- More syscalls -- Linux has hundreds of syscalls: open, read, mmap, socket, ioctl, and more.
- SSE/AVX -- x86_64 SIMD instructions for parallel data processing.
- x87 FPU -- Legacy floating-point instructions still used in some contexts.
- Inline assembly -- Embed assembly in C/C++ code using GCC's asm syntax.
- Performance optimization -- Instruction scheduling, cache effects, branch prediction, and micro-op fusion.
Build Something
- A simple shell -- Read commands, fork processes, execute programs using only syscalls.
- A bootloader -- Write bare-metal x86_64 code that runs before the OS.
- An ELF parser -- Read and understand the binary format that Linux executables use.
- Optimize a hot loop -- Take a C function, look at the compiler output (
gcc -S), and hand-optimize it.
References
- Intel 64 and IA-32 Architectures Software Developer's Manual -- the definitive reference.
- x86 and amd64 Instruction Reference -- searchable instruction reference.
- Agner Fog's Optimization Manuals -- the gold standard for x86 performance optimization.
- Computer Systems: A Programmer's Perspective by Bryant and O'Hallaron -- excellent textbook covering x86_64 assembly in depth.