References: EE 599 Compiler Code Generation And Optimization

WARNING! This page is again being incrementally updated for Spring 2005... some things the class has not yet discussed may be significantly changed.

Introduction To Compilers And Translation Engineering (PDF)
These are the course notes Dietz wrote for the undergraduate compilers course (EE468) at Purdue University's School of Electrical and Computer Engineering.
Dumb Baseline Compiler
The really dumb compiler we discussed in class is available as a TAR file or as the individual pieces (better for WWW browsing). Makefile is the make file. tup.h is the header file. tup1.c is the main program. tup2.c is the parser. tup3.c is the lexical analyzer. tup4.c is the symbol table. tup5.c is the code generation stuff; the only part you'll really need to modify.
Efficiently computing static single assignment form and the control dependence graph
Cytron et al's big (40 page) SSA paper, 1991.
Single-pass generation of static single-assignment form for structured languages
This is basically LNR meets SSA... a substantially easier read than the 40-page paper above, 1994.
The Generation of Optimal Code for Arithmetic Expressions
Sethi and Ullman's technique for determining tree walk order to minimize register spills (i.e., minimizing maxlive), 1970.
Register allocation & spilling via graph coloring
Chaitin's well-known method for register allocation by graph coloring, 1982.
Program slicing
Mark Weiser's original paper discussing slicing, 1981.
Wisconsin Program-Slicing Project
A variety of things done by the group at Wisconsin on program slicing.


Compiler Code Generation And Optimization