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

Notes


Slides and/or Notes

  1. Introduction to COMP 412, and 2-up version
  2. The Compiler's Front End, and 2-up version

  3. Local Register Allocation and Lab 1, and 2-up version
    A Second Worked Example, and 2-up version
    Performance Tutorial, and 2-up version

  4. Lexical Analysis, I, and 2-up version
  5. Lexical Analysis, II: RE->NFA, and 2-up version
  6. Lexical Analysis, III: NFA->DFA, DFA->minimal DFA, and 2-up version
  7. Lexical Analysis, IV: DFA->minimal DFA, DFA->RE, and 2-up version
  8. Lexical Analysis, V:, implementing scanners, and 2-up version      <= Lecture not given, slides are for reference

  9. Parsing, I: Context-free grammars, and 2-up version
  10. Parsing, II:Ambiguity, Precedence, and start of Top-Down Parsing, and 2-up version
  11. Parsing, III:Recursive Descent, and 2-up version
  12. Parsing, IV:, FIRST, FOLLOW, Indirect Left-Recursion Removal, and the LL(1) Table Construction, and 2-up version

    Material Covered on the First Exam

  13. Parsing, V: Intro to Bottom-up Parsing, and 2-up version
  14. Parsing VI: LR(1) Examples, and 2-up version
  15. Parsing VII: LR(1) Table Construction, and 2-up version
  16. Parsing VIII: One More LR(1) Grammar, along with Parsing Wrap-up Material, and 2-up version

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

  19. Slides from the Lab 2 Question & Answer session

  20. Intermediate Representations, and 2-up version
  21. Representing the Name Space, I, and 2-up version
  22. Naming for OOLs, and 2-up version

  23. 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.
  24. Extending Expressions to Assignment, and 2-up version
  25. Expressions: Array Layout & Addressing, and 2-up version
  26. Records, Structures, & Calls, and 2-up version
    Column mentioned in the lecture: Poul-Henning Kamp, "The Most Expensive One-byte Mistake", ACM Queue, July 25, 2011
  27. The Linkage Convention, and 2-up version
  28. The Linkage Convention, II, and 2-up version
  29. Establishing Addressability, and 2-up version
  30. Booleans, Relational Expressions, and Control Flow, and 2-up version (corrected)
  31. Runtime Structures for OO Languages, and 2-up version
  32. Complications of Multiple Inheritance, and, 2-up version

  33. A Quick Intro to Optimization, and 2-up version

  34. Local Instruction Scheduling, and 2-up version     <== Lab 3 Lecture
    Gibbons and Muchnick's classic paper (1986) "Efficient Instruction Scheduling for a Pipelined Architecture," in Proceedings of the SIGPLAN 1986 Symposium on Compiler Construction -- excellent discussion of scheduling, priority functions, & tie-breaking

    Lab 3 Performance Tutorial, and 2-up version    <== Lab 3 Performance Tutorial

  35. Local Optimization: Value Numbering, and 2-up version

  36. Overview of Instruction Selection, and 2-up version
  37. Instruction Selection by Tree-Pattern Matching, and 2-up version
  38. Instruction Selection via Peephole Optimization, and 2-up version

  39. Instruction Scheduling: Beyond Basic Blocks, and 2-up version

  40. Introduction to Data-Flow Analysis with Dominators and Live Variables, and 2-up version

  41. Global Register Allocation via Graph Coloring, Part I, and 2-up version
  42. Global Register Allocation via Graph Coloring, Part II, and 2-up version

  43. Just-In-Time Compilers, and 2-up version

Syllabus

Fall 2014 Syllabus


Comp 412 Home Last modified Friday, 05-Dec-2014 09:12:49 CST.