Practical uses
- Inspect what compilers and CPUs actually execute
- Optimize tiny performance-critical routines
- Program bootloaders and embedded targets
- Reverse engineer binaries and debug crashes
The human-readable form of the instructions a CPU actually runs.
Assembly language is a thin layer above raw machine code. Every other programming language compiles down to this. Learning it means seeing exactly what the CPU does — registers, memory, jumps, the stack. It takes more code to do simple things, but it shows you what every other language is doing underneath. We teach x86-64 NASM on Linux, the most common flavor for desktop/server work.
This track uses NASM (the Netwide Assembler) and the x86-64 Linux calling conventions, so you need a Linux environment. On Windows, WSL2 works well; on macOS, a Linux VM or container is the simplest option.
# Install WSL2 (run in PowerShell as Administrator):
wsl --install
# Restart, then in Ubuntu (WSL2):
sudo apt update && sudo apt install nasm build-essential
# Verify:
nasm --version
ld --versionLearn the basics first, then pick up these tools when a project needs them.