Section | Topic | Readings (A=Appel, C=Cooper, D=Dragon) |
Introduction | Course overview | A1 |
Lexical Analysis | RE, automata, lexer | A2, D3.3, D3.6-3.8 |
Parsing I | CFG, parse tree | A3.1, D4.2 |
Parsing II | Top-down parsing | A3.2, D4.3-4 |
Parsing III | Bottom-up parsing | A3.3, D4.5-7 |
Abstract Syntax | Semantic action, AST | A3.4, A4, D4.8-9 |
Semantic Analysis | Scope & symbol table, type checking | A5, D6.1-2, D7.6, Cardelli | Activation Record | Memory layout, stack frame, use of registers | A6, D7.2-4 |
Translating to Intermediate Code | Overview of IR, translation to IR tree | A7, C5, D8.1 |
Basic Block and Traces | Lowering of IR tree | A8 |
Instruction Selection | Maximal munch, dyanmic programming, tree grammars | A9 |
Liveness Analysis | Overview of compiler optimizations, liveness analysis | A10, D10.6 |
Register Allocation | Graph coloring | A11, C13.3, C13.5, D9.5-6 |
Garbage Collection | Mark-and-sweep, reference counting, copy collection | A13, C13.5 |
Object-oriented Languages | Field layout, method dispatch, membership testing | A14 |
Loop Optimizations | Dominance, local loop transformations | A18 |