Open-Access Compiler Coursework Targets Physical x86 and ARM Code Generation
Professor Douglas Thain of the University of Notre Dame has published the second edition of "Introduction to Compilers and Language Design." The curriculum guides engineers through constructing a self-contained compiler targeting functional x86 or ARM assembly from a C-like source language.
Project Scope and Pipeline Architecture
The curriculum, developed for the CSE 40243 compilers course at the University of Notre Dame, details the construction of a compiler from source to machine-executable assembly. The target source language is B-Minor, a C-like language specified within the text.
- Chapter 1: Introduction
- Chapter 2: A Quick Tour
- Chapter 3: Scanning
- Chapter 4: Parsing
- Chapter 5: Parsing in Practice
- Chapter 6: The Abstract Syntax Tree
- Chapter 7: Semantic Analysis
- Chapter 8: Intermediate Representation
- Chapter 9: Memory Organization
- Chapter 10: Assembly Language
- Chapter 11: Code Generation
- Chapter 12: Optimization
- Appendix A: Sample Course Project
- Appendix B: The B-Minor Language
- Appendix C: Coding Conventions
Implementation Resources and Test Suites
To facilitate engineering implementation, the text is supported by the `compilerbook-examples` repository hosted on GitHub. This repository provides boilerplate code and validation tools designed to verify the compiler at each developmental phase.
- Starter code structure for the project compiler
- Scanners and parsers for bootstrap testing
- Specific validation test cases for the scanner, parser, typechecker, and code generator
The 2nd Edition of the text (Revision Date: January 15, 2021) is distributed under academic use permissions as a free online textbook, available either as a complete single PDF or as individual chapter files. Physical copies are available in both hardcover and paperback editions (Paperback ISBN: 979-8-655-18026-0). Technical errata or typos are managed directly by the author via email submission to dthain@nd.edu.