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