Cooper: Engineering a Compiler, 2e Lecture Slides
Lectures from the Undergraduate Course at Rice
- Introduction and Overview
- The View from 35,000 Feet
- Local Register Allocation and Lab 1
- Introduction to Scanners
- Regular Expressions, NFAs, DFAs, Thompson's Construction and the Subset Construction(2 classes)
- Building Scanners
- DFA Minimization, based on Hopcroft's algorithm, along with slides on Brzozowski's algorithm, also found in Lecture 5
- Introduction to Parsing
- Top-down Parsing I
- 10. Top-down Parsing II, including recursive descent parsers and LL(1) parsers
- Bottom-up Parsing
- LR Parsers I
- LR Parsers II, the Canonical LR(1) Table Construction (major overlap with lecture 12)
- Parsing Wrap-up and Lab 2 discussion
- Context-sensitive Analysis I (2 classes)
- Context-sensitive Analysis II
- Intermediate Representations
- The Procedure Abstraction I
- The Procedure Abstraction II
- Procedure Abstraction III
- Procedure Abstraction IV
- Support for Object-Oriented Langauges (OOLs)
- Support for Inheritance in OOLs
- Code Shape I, Quick Intro to Code Generation & Code Shape for Expressions
- Code Shape II, Arrays, Aggregates, & Strings
- Code Shape III, Boolean and Relational Expressions, & Control Flow
- Introduction to Optimization, terminology & local value numbering
- Local tree-height balancing, not used in 2011
- Regional Optimization, Superlocal Value Numbering and Loop Unrolling
- Global Optimization, Live Analysis
- Introduction to Instruction Selection and Peephole-based Selection
- Tree-pattern Matching for Instruction Selection
- Local Instruction Scheduling with Applications to Lab 3
- Instruction Scheduling II: Beyond Basic Blocks
- Instruction Scheduling III: Software Pipelining
- Global Register Allocation via Graph Coloring
- Global Register Allocation via Graph Coloring, Part II
- Combining Scheduling and Register Allocation
ZIP Archive containing all lecture notes