A hands-on example-filled guide to the theory and practice of writing a C compiler: a computer
program that translates code written by programmers into code the computer can read.
Compilers are at the heart of everything programmers do yet even experienced developers find
them intimidating. For those eager to truly grasp how compilers work Writing a C Compiler
dispels the mystery. This book guides you through a fun and engaging project where you’ll learn
what it takes to compile a real-world programming language to actual assembly code. Writing a
C Compiler will take you step by step through the process of building your own compiler for a
significant subset of C—no prior experience with compiler construction or assembly code needed.
Once you’ve built a working compiler for the simplest C program you’ll add new features
chapter by chapter. The algorithms in the book are all in pseudocode so you can implement your
compiler in whatever language you like. Along the way you’ll explore key concepts like:
Lexing and parsing: Learn how to write a lexer and recursive descent parser that transform C
code into an abstract syntax tree. Program analysis: Discover how to analyze a program to
understand its behavior and detect errors. Code generation: Learn how to translate C language
constructs like arithmetic operations function calls and control-flow statements into x64
assembly code. Optimization techniques: Improve performance with methods like constant folding
dead store elimination and register allocation. Compilers aren’t terrifying beasts—and with
help from this hands-on accessible guide you might even turn them into your friends for life.