Principles of Compilers (Spring 24)

Course Information

Lectures: Tuesday, 10:00am - 12:25pm
Instructor: rainoftime
Teaching assistant: Chiaki Cage

Schedule

The textbook we (mainly) use is Andrew W. Appel's Modern Compiler Implementation in C. Contact the instructor/teaching assistant if you have any questions or suggestions.

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

Assignments, Labs, Exams

References

Some Tutorials

Other Resources