COMP 506: Compiler Construction, Graduate Edition
Zoran Budimlić
Department of Computer Science
Rice University
Houston, Texas, USA
Spring 2019: Keck 102, Tuesday & Thursday, 9:25 AM
Course Syllabus

This page contains the PDF format copies of the lecture notes.

Announcements


Lecture Notes

  1. Introduction and Examples
  2. Scanning and Lexing 1   Chapter 2 in EaC2e
  3. Scanning and Lexing 2
  4. Parsing 1   Chapter 3 in EaC2e
  5. Parsing 2
  6. Parsing 3
  7. Intermediate Representations   Chapter 5 in EaC2e
  8. Semantic Elaboration    Section 4.4 in EaC2e
    A tar file with example from the lecture
  9. Semantic Elaboration 2
  10. Semantic Elaboration 3
  11. Arrays and Functions    Sections from Chapters 6 and 7 in EaC2e

    Midterm Exam: List of topics for the midterm exam

    Material above this line is covered on the midterm exam

  12. More on Functions
  13. Naming and Addressability
  14. The Software Stack           Not in EaC2e
  15. The Memory Hierarchy    Not in EaC2e

  16. Introduction to Code Optimization with Example from Local Value Numbering     Chapter 8 in EaC2e
  17. From Local to Regional Optimization, Superlocal Value Numbering

  18. Beyond Superlocal: DOM and DVNT     Intro to data-flow analysis
  19. Global Common Subexpression Analysis and Inline Substitution     Available Expression Analysis
  20. A Simple, Classical Code Motion Technique
  21. Loops And Locality
  22. Introduction to Static Single Assignment Form     Chapter 9 in EaC2e
  23. Building Static Single Assignment Form
  24. Translation Out of Static Single Assignment Form
    Paper on copy coalescing referenced in lecture:
    Z. Budimlić, K.D. Cooper, T.J. Harvey, K. Kennedy, T. Oberg, and S.W. Reeves, Fast Copy Coalescing and Live-range Identification, in Proceedings of 2002 SIGPLAN PLDI (doi)
  25. Eliminating Useless and Unreachable Code: DEAD and CLEAN
  26. Instruction Scheduling     Chapter 12 in EaC2e
  27. Scheduling Beyond Basic Blocks


    Information for the Final Exam
    EaC2e refers to the textbook, Engineering a Compiler, 2nd Edition
    This site is maintained by Zoran Budimlić.