Chapter 39 Further Reading: Beyond Assembly
Compiler Engineering
"Engineering a Compiler" by Cooper and Torczon (3rd edition) The standard academic compiler textbook covering lexing, parsing, IR construction, data flow analysis, register allocation, and instruction selection. The register allocation chapter (graph coloring) and code generation chapters directly connect to what you observe in assembly output. More rigorous than the "Dragon Book."
"LLVM Cookbook" and LLVM official documentation
https://llvm.org/docs/
For hands-on LLVM: the tutorial "Kaleidoscope: Implementing a Language with LLVM" walks through building a complete JIT-compiled language. The ORC JIT documentation covers the runtime JIT framework. The TableGen documentation explains how backends are specified.
Compiler Explorer (godbolt.org)
The most useful tool for understanding what compilers do. Write C/C++/Rust/Go/Zig, choose any compiler (GCC, Clang, MSVC, ICC) and architecture (x86-64, ARM64, RISC-V, MIPS, WASM), pick optimization level, see assembly. The "diff" view shows what changes between -O0 and -O2.
https://godbolt.org/
JIT Compilation
"A Brief History of Just-In-Time" (ACM Computing Surveys 2003) by John Aycock A survey of JIT compilation history from the 1960s through modern implementations. Places V8, HotSpot, and LLVM ORC in historical context. Available free from the author's website.
V8's blog posts on TurboFan and Liftoff
https://v8.dev/blog
Google's V8 team publishes detailed technical articles on their JIT compiler design decisions. The Liftoff (baseline WASM compiler) and TurboFan (optimizing compiler) design posts are especially relevant to understanding production JIT architecture.
WebAssembly
WebAssembly specification
https://webassembly.github.io/spec/
The normative WASM specification. The core spec is readable (about 200 pages) and covers the binary format, text format, type system, and execution model. Understanding the type system explains why WASM is safe to sandbox.
"WebAssembly: The Definitive Guide" by Brian Sletten (O'Reilly) A practical introduction to WASM targeting developers, covering both in-browser and WASI usage. Includes examples in C, Rust, and AssemblyScript compiled to WASM.
wasmtime documentation
https://docs.wasmtime.dev/
The Bytecode Alliance's production WASM runtime. The "Embedding API" documentation and the security model documentation are especially valuable.
RISC-V
"The RISC-V Reader: An Open Architecture Atlas" by Patterson and Waterman Written by RISC-V's architects. Short (238 pages), clear, and designed for someone who knows computer architecture but is new to RISC-V. The comparison tables between RISC-V and x86/ARM are especially useful for readers of this book.
RISC-V ISA Specification (Volume I: Unprivileged)
https://riscv.org/technical/specifications/
Free and remarkably short. The base RV64I specification is about 50 pages. Read it if you want to understand the ISA at the encoding level — it is the ARM64 equivalent of the ARM ARM but much more readable.
riscv-bytes.com blog by Daniel Mangum A blog covering RISC-V at the assembly and hardware level. Articles on the calling convention, instruction encoding, and platform bring together what the RISC-V specification specifies and what Linux on RISC-V actually looks like.
GPU Computing
NVIDIA CUDA C++ Best Practices Guide and PTX ISA Reference
https://docs.nvidia.com/cuda/
The PTX ISA Reference Manual documents every PTX instruction. For assembly-level GPU understanding, this is the starting point.
"GPU Gems" series (NVIDIA, free online) Practical GPU programming techniques. Understanding the material in this book from an assembly background makes the performance discussion more concrete.
Retrocomputing and Other Architectures
"Programming the 65816: Including the 6502, 65C02, and 65802" by Bruce Clark The 65816 (used in the Super Nintendo) is one of the most approachable older ISAs. Understanding how to write code with only 3 general-purpose registers and a 24-bit address space is an excellent exercise in constraint-driven design.
Motorola 68000 Programmer's Reference Manual The 68000 is widely considered one of the most elegantly designed CISC processors. Its orthogonal instruction set (any addressing mode with any instruction) influenced modern ISA design thinking.