COMP 412: Topics in Compiler Construction
Keith Cooper
Linda Torczon
Department of Computer Science
Rice University
Houston, Texas, USA
Fall 2013: Room 210, Herzstein Hall, Monday, Wednesday, Friday, 11:00am


Slides and/or Notes

  1. Introduction to COMP 412, and 2-up version, and Addendum
  2. Lab 0 Lecture, and 2-up version
  3. Overview of Compilation, and 2-up version      (two lectures)

  4. Lexical Analysis - Introduction, and 2-up version
  5. NFAs and Thompson's Construction, and 2-up version
  6. The Subset Construction + Brzozwski's algorithm, and 2-up version

  7. Lab One: Local Register Allocation, and 2-up version
  8. Slides from the tutorial on lab one
    A worked Top-Down Example      (NEW)
    A worked Bottom-Up Example      (NEW)

  9. DFA Minimization with Hopcroft's Algorithm, and 2-up version
  10. Building Scanners, and 2-up version

  11. Introduction to Parsing, and 2-up version
  12. Top-Down Parsing (full slide set), and 2-up version      (multiple lectures) (Lab 2)
  13. Bottom-Up Parsing -- LR(1) and 2-up version      (full set to follow)
  14. Bottom-Up, LR(1) Parsing, II, and 2-up version
  15. Bottom-Up, LR(1) Parsing, III - The LR(1) Table Construction, and 2-up version
    and another example
  16. Bottom-Up LR(1) Parsing, IV - 1 more example, plus a wrap up of parsing, and 2-up version

  17. Semantic Elaboration I, and 2-up version
  18. Semantic Elaboration II, and 2-up version
    Auxilliary Lecture on Type Systems

  19. Intermediate Representations, and 2-up version

  20. Introduction to Translation, plus the Procedure's Control Abstraction, and 2-up version
  21. Abstractions Created in Procedures, and 2-up version
  22. Naming in Procedures, continued, and 2-up version
  23. Activation Records and Addressability, and 2-up version
  24. Runtime Support for the Procedure Abstraction, and 2-up version

  25. Generating Code for Expressions, and 2-up version
    Paper mentioned in the lecture notes:   Robert Floyd, "An Algorithm for Coding Efficient Arithmetic Operations," CACM 4(1), January 1961, pages 42-51.
  26. More Expressions: Assignment and Array Element Addressing, and 2-up version
  27. More Expressions: Records & Strings, and 2-up version
    Column mentioned in the lecture: Poul-Henning Kamp, "The Most Expensive One-byte Mistake", ACM Queue, July 25, 2011

  28. Lab 3: Local Instruction Scheduling, and 2-up version
    Gibbons and Muchnick's classic paper (1986) "Efficient Instruction Scheduling for a Pipelined Architecture," in Proceedings of the SIGPLAN 1986 Symposium on Compiler Construction

  29. Boolean Values, Relational Expressions, and Control Flow, and 2-up version
  30. Compile-time and Runtime Support for Object-Oriented Langauges, and 2-up version
  31. OOLs, Part II, and 2-up version

  32. Instruction Selection (+ Introduction to Code Generation), and 2-up version
  33. Selection by Tree-Pattern Matching, and 2-up version
  34. Tree-Pattern Matching, II, and 2-up version
  35. Selection via Peephole Optimization, and 2-up version

  36. Instruction Scheduling, II - Beyond Basic Blocks, and 2-up version
    See also the Gibbons and Muchnick paper referenced under lecture 28 (above).

  37. Introduction to Optimization: Value Numbering, and 2-up version    2 lectures
    See EaC2e 8.4.1, or Briggs, Cooper, & Simpson in Software-Practice & Experience, 27(6), June 1997, pages 701-724.
  38. Profile-Guided Code Placement, and 2-up version


Fall 2013 Syllabus

Comp 412 Home Last modified Wednesday, 04-Dec-2013 16:14:55 CST.