CS 322, Languages and Compiler Design, Spring 2007, Lecture Notes
The following are powerpoint slides (and associated code) from the lectures.
- Lecture 1
- Lecture #1. Tuesday, April 3, 2007.
- Introduction, class information,Course Mechanics
Text Book, Down-loading SML, Themes, Back-end tasks,
Language design issues, I.R., Machine Code, Optimization,
Interpretation.
- Power Point Slides
- Slides on using ML
- Lecture 2
- Lecture #2. Thursday, April 5, 2007.
- Overview of backend issues
(storage locations, registers, aliasing),
Translating arithmetic, Register allocation, Reducing demand for registers,
Reuse of registers, List.find, Anonymous functions.
- Power Point Slides
- "S02code.sml". Code from the lecture.
- "ProgramTypes.sml". Datatypes from CS321
- Lecture 3
- Lecture #3. Tuesday, April 10, 2007.
- Boolean expressions, Positional encoding,
Short circuit evaluation, Conditional move,
Array expressions.
- Power Point Slides
- "S03code.sml". Code from the lecture.
- Lecture 4
- Lecture #4. Thursday, April 12, 2007.
- Strings (representation, byte operation, copying),
Structures (representation, anonymus value, field information, layout),
Control Flow (basic blocks, generating code, loops).
- Power Point Slides
- "S04code.sml". Code from the lecture.
- Lecture 5
- Lecture #5. Tuesday, April 17, 2007.
- Array Access, Case stmt, Jump tables, Procedure call,
Machine dependent strategy, OO-langauages.
- Power Point Slides
- "S05code.sml". Code from the lecture.
- Project 1 Templates. Slides from Jenke Li about templates for MiniJava Translation.
- "MiniIR1.sml". ML datatypes declarations for IR #1
- Lecture 6
- Lecture 7
- Lecture #7. Tuesday, April 24, 2007.
- More about IR1, Library Functions, Canonicalization
OO runtime issues, Object size, Initialization.
- Power Point Slides
- "S08code.sml". Code from the lecture.
- Lecture 8
- Lecture #8. Thursday, April 26, 2007.
- Using comments, Example output from Phase1,
Language Semantics (Operational, Axiomatic, Denotational),
An interpreter for IR1. Review for exam
- Power Point Slides
- "S09code.sml". Code from the lecture.
- Mid Term Exam
- Midterm. Tuesday May 1, 2007.
- In class, 1.5 hours
- practice questions in the April 26 notes.
- Lecture 9
- Lecture #9. Thursday, May 3, 2007.
- Project 2 introduction.
- Project #2, Peephole optimizations.
- Power Point Slides
- Lecture 10
- Go over midterm exam
- Continue project 2 description discussion and Peephole optimizations from
last class meeting.
- Lecture 11
- Lecture #11. Tuesday, May 8, 2007.
- Optimizations (local, loop, global). Liveness Analysis, Spilling, Problems with Jumps, Ranges,
Intervals, Linear Scan register allocation.
- Power Point Slides
- Lecture 12
- Lecture 13
- Lecture #13. Tuesday, May 15, 2007.
- Control flow graphs, Liveness using data flow,
dataflow equations, Using fixed-points. Dynamic Liveness,
The halting problem, Register Interference Graphs,
Graph coloring, Flow graph relations, Dominators.
- Power Point Slides
- Lecture 14
- Lecture #7. Thursday, May 17, 2007.
- Intro to the x86 architecture and assembly language
- Power Point Slides
- Lecture 15
- Lecture 16
- Lecture #16. Thursday, May 24, 2007. (lecture by Nathan Linger)
- Project 3, Runtime.c, Running the code, debugging assembler,
division, strings for println, making test files.
- Power Point Slides
- Lecture 17
- Lecture #17. Thursday, May 31, 2007.
- Data flow equations, available expressions, live variables (again),
solving data flow equations, constant propagation, using associativity and comuutativity,
- Power Point Slides
- Lecture 18
- Lecture #18. Tuesday, June 5, 2007.
- Static Single Assingment.
computing dominators.
- Power Point Slides
Back to CS 322, Languages and Compiler Design, Home Page