Introduction

Build a compiler to learn how programming languages work. Use low-level assembly to learn how computers work.

Walks through a minimal yet complete compiler implementation. Compiles a static-typed language into x64 ELF executables.

  1. Simple interpreter. Get your own programming language up and running.
  2. Bytecode compiler. A step closer to the machine.
  3. x64 assembly & instruction encoding. Understand how the machine works.
  4. Translate bytecode to x64 code. Bridging the virtual machine to the real machine.
  5. Generate binary executables. Putting it all together.

Contents

Part I: Interpreter

  1. Introduction
  2. A Simple Calculator
  3. Interpreter: Variables and Scopes
  4. Interpreter: Control Flows and Functions

Part II: Bytecode Compiler

  1. How Computers Work
  2. The Virtual Machine and Bytecode
  3. Compiler: Variables and Expressions
  4. Compiler: Control Flows
  5. Compiler: Functions and Non-Local Variables

Part III: Machine Code

  1. A Crash Course on x64 Assembly
  2. The x64 Instruction Encoding
  3. From Virtual Machine to Real Machine
  4. Binary Executables
  5. Pointers and Memory

PDF/EPUB and Paperback Editions

The full book is available for purchase.