![]() |
Computer Science Department |
Compilers
CS 431 - Fall 2009
| Date | Topic | Handouts | |
|---|---|---|---|
| 1. | 9/9/09 | Overview of the compilation process |
slides 1-11 syllabus Linux basics vnc.pdf Assignment 1> |
| 2. | 9/11/09 | Discussion of the first assignment: Building an interpreter in Java | slides 12-22 |
| 3. | 9/14/09 | Lexical analysis: DFA's | slides 23-26 Bantam Java home page Manual for the extended language (V1.3) Compiler API |
| 4. | 9/15/09 | Lexical analysis: regular expressions | slides 27-33 |
| 5. | 9/16/09 | Lexer generator: JavaCC | slides 34-45 Assignment 2> Javacc project home page |
| 6. | 9/21/09 | Context-free grammars; recursive-descent parsing | slides 46-59 |
| 7. | 9/22/09 | Table-based predictive parsing; left-factoring; eliminating left-recursion | slides 60-69 |
| 8. | 9/23/09 | Computing FIRST sets | slides 70-74 |
| 9. | 9/28/09 | Computing FOLLOW sets; building the parsing table | slides 75-82 |
| 10. | 9/29/09 | LL(k) grammars; Parser generator: JavaCC | slides 83-94 Assignment 3> |
| 11. | 9/30/09 | Introduction to bottom-up parsing | slides 95-101 |
| 12. | 10/5/09 | LR parsing algorithm; ACTION and GOTO tables; LALR(1) parser generator: yacc | slides 102-113 Nice overview of lex and yacc |
| 13. | 10/6/09 | Syntax-directed translation; Parse trees | Slides 114-117 |
| 14. | 10/7/09 | Building abstract syntax trees using syntax-directed translation; The Visitor pattern | Slides 118-132 |
| 15. | 10/12/09 | Doing syntax-directed translation with JavaCC | Slides 133-143 |
| 16. | 10/13/09 | Syntax versus semantics; Static semantic analysis; scoping rules | Slides 144-156 |
| 17. | 10/14/09 | Scoping rules; Symbol table implementations | Slides 157-173 |
| 18. | 10/19/09 | Managing environments for Bantam Java | Slides 174-184 Assignment 4 |
| 19. | 10/20/09 | Type checking Bantam Java | Slides 185-200 |
| 20. | 10/21/09 | Overview of Java's architecture and of the JVM | Slides 201-205 |
| 21. | 10/26/09 | The JVM: the execution engine and runtime data areas | Slides 206-213 The JavaTM Virtual Machine Specification, Second Edition artima.com |
| 22. | 10/27/09 | Midterm exam | |
| 23. | 10/28/09 | Discussion of midterm exam | |
| 24. | 11/2/09 | The JVM: instruction set | JVMViewer Slides 214-221 |
| 25. | 11/3/09 | The JVM: Scoping rules, stack frame size, and optimizations | Slides 222-230 |
| 26. | 11/4/09 | The JVM: Manipulating objects and fields | Slides 231-235 Assignment 5 |
| 27. | 11/9/09 | The JVM: Casting examples | Slides 236-237 |
| 28. | 11/10/09 | The JVM: Type descriptors; branching; method invocation and return | Slides 238-249 |
| 29. | 11/11/09 | The JVM: Constructors; dynamic versus static binding | Slides 250-254 |
| 30. | 11/16/09 | The JVM: Super calls; Array manipulations | Slides 255-263 |
| 31. | 11/17/09 | Generating bytecodes for Bantam Java programs; Jasmin | Slides 264-275 Jasmin home page |
| 32. | 11/18/09 | Overview of optimization techniques | Slides 276-2?? |
| 33. | 11/23/09 | A few more structural optimizations Control-flow graph and motivation for liveness analysis |
|
| 34. | 11/24/09 | Iterative solution to the dataflow equations | |
| Thanksgiving | |||
| 35. | Static versus dynamic liveness | ||
| 36. | Interference graphs; Graph coloring | ||
| 37. | The SIMPLIFY-SPILL-SELECT algorithm for register allocation | ||
| 38. | Discussion and wrap-up of the code-generation assignment | ||
| 39. | Optimal register allocation for tree expressions | ||
| 40. | Wrap-up of the Sethi-Ullman register allocation algorithm | ||
| 41. | Final exam | ||