Modern Compiler Implementation in Java: Basic Techniques

Modern Compiler Implementation in ML: Basic Techniques

Modern Compiler Implementation in C: Basic Techniques

©1997 by Andrew W. Appel

Cambridge University Press

Contents of preliminary, 1997 edition: (See also final, 1998 edition)

    Part I. Fundamentals of Compilation

  1. Introduction
  2. Lexical Analysis
  3. Parsing
  4. Abstract Syntax
  5. Type Checking
  6. Activation Records
  7. Translation to Intermediate Code
  8. Basic Blocks and Traces
  9. Instruction Selection
  10. Liveness analysis
  11. Register allocation
  12. Putting it all together

    Part II. Advanced Topics

  13. Garbage collection
  14. Object-oriented languages
  15. Functional Programming Languages
  16. Dataflow Analysis
  17. Loop Optimizations Chapters 18-21 are not in the 1997 edition but will appear in the 1998 edition of the book:
    • Parser error recovery (new section of Chapter 3)
  18. Polymorphic Types
    • Parametric polymorphism
    • Type inference
    • Translation to intermediate code
    • Resolution of static overloading
  19. Static Single-Assignment Form
    • Converting to SSA form
    • Efficient computation of the dominator tree
    • Optimization algorithms using SSA
    • Arrays, pointers, and memory
    • The control-dependence graph
    • Converting back from SSA form
  20. Scheduling and Pipelining
    • Loop scheduling without resource bounds
    • Resource-bounded loop pipelining
    • Branch prediction
  21. Memory Hierarchies
    • Cache organization
    • Cache-block alignment
    • Prefetching
    • Loop interchange
    • Blocking
    • Garbage collection and the memory hierarchy