Reading real code written by experienced developers consolidates everything you have learned. Browse, clone, rebuild, then modify.
| Source | What it is |
|---|---|
| TheAlgorithms/Assembly | Classic algorithms and data structures implemented in x86-64 assembly, with comments and expected output. |
| 0xAX/asm — example sources | Dozens of short, focused x86-64 programs: system calls, string handling, and file I/O. |
| Codewars | Ranked challenges; select the Assembly kata category, submit a solution, then study other approaches. |
| riscv-isa-sim (Spike) | The reference RISC-V simulator: read it to see how an ISA is implemented, or run your own programs on it. |
Follow this order and you will never feel stuck:
objdump -d and read it. That habit is the real skill this track teaches.Playgrounds teach you the how; the manuals teach you the precise rules. When two sources disagree, the vendor manual wins.
| Reference | What it is |
|---|---|
| NASM Manual | The complete documentation: syntax, directives, macros, output formats, and the full instruction reference. This is the canon for x86 with NASM. |
| NASM Tutorial (Ray Toal) | A concise, well-organised tour of Linux x86-64 assembly using NASM and system calls. |
| x86 Instruction Reference | Every x86 instruction with its operands, encoding, and flags — a searchable copy of the Intel manual's instruction set. |
| ARM Architecture Reference Manual (AArch64) | The official ARM64 specification: registers, instruction set, exception model, and memory ordering. |
| Azeria Labs — ARM Assembly Basics | A free, practical ARM assembly series (32-bit ARM) covering registers, instructions, and the calling convention. |
| RISC-V Specifications | The ratified ISA documents: the RV64I base plus the standard extensions. |
| RISC-V Assembly Programmer's Manual | A short companion document listing the assembler mnemonics, pseudo-instructions, and register conventions. |
| WebAssembly Specification | The formal specification of WAT and the WASM binary format, including the instruction set. |
| OSDev Wiki — Assembly | Practical, systems-focused assembly material: interfacing with C, calling conventions, and boot code. |
| System V AMD64 ABI | The calling convention used by Linux, macOS, and BSD: argument registers, stack alignment, and register preservation. |
Structured material turns scattered facts into a skill. These are all free to start.
| Course | What it is |
|---|---|
| Computer Architecture (video series) | Explains the hardware your assembly runs on: pipelines, caches, and the machine cycle. |
| Exercism — ARM64 Assembly track | Free exercises with automated tests and human mentoring; a rare opportunity to have assembly reviewed by someone else. |
| OpenSecurityTraining — Introduction to x86 Assembly | A free, thorough x86 course with slides and videos, written from a reverse-engineering perspective. |
| Computer Architecture (Coursera) | A university-level course covering instruction sets, pipelining, and memory hierarchies; free to audit. |
| 0xAX/asm — assembly for the impatient | An approachable GitHub book teaching x86-64 assembly with Linux syscalls, in the style of "for the impatient". |
You do not need to install anything to start. A browser simulator assembles and runs ARM or RISC-V assembly in seconds, and Compiler Explorer shows you what a C compiler emits for any of the four dialects. Install NASM only when you want to run your own x86-64 programs locally.
The assembler turns your text into an object file; the linker turns that into a program. These are the tools used throughout this track.
| Tool | Dialect | What it is | Best for |
|---|---|---|---|
| NASM | x86 / x86-64 | The Netwide Assembler — Intel syntax, formats for ELF, Mach-O, and Win64. | Everything in this track; the primary tool. |
| GNU as (gas) | x86, ARM64, RISC-V | The assembler inside binutils; AT&T syntax by default, with an .intel_syntax switch. |
Reading Linux kernel and GCC output. |
| LLVM / clang | All | A compiler and integrated assembler supporting every architecture here. | Cross-assembling for ARM64 and RISC-V. |
| binutils (ld, objdump, readelf, nm) | All | The linker and the inspection tools you will use constantly. | Linking, disassembly, and inspecting binaries. |
| GDB | All | The GNU debugger: breakpoints, register and memory inspection, step-by-step execution. | Finding out what the machine is really doing. |
The fastest learning loop is no loop at all: write, run, read the output, change one line. All of these work in a browser with no account.
| Tool | What it is | Best for |
|---|---|---|
| Compiler Explorer (Godbolt) | Type C, C++, or Rust and see the assembly the compiler emits, with colour-coded source mapping. Supports x86-64, ARM64, and RISC-V side by side. | Understanding what a compiler does — and comparing dialects. |
| CPUlator | A full browser simulator for ARMv7, MIPS, and RISC-V with a debugger, registers, and memory views. Assembler included. | Running ARM and RISC-V code with a debugger, no install. |
| OneCompiler (Assembly) | A minimal online NASM environment that runs 32/64-bit x86 assembly and shows the output. | A quick check of a short x86 snippet. |
| WABT wat2wasm demo | The official WebAssembly Binary Toolkit demo: convert WAT text to a WASM binary in the browser. | Experimenting with WebAssembly text format. |
| Wasmtime | A standalone WebAssembly runtime with a CLI, for running .wasm outside a browser. |
Running WASM on the command line. |