Sign up
Forgot password?
FAQ: Login

Cooper K., Torczon L. Engineering a Compiler

  • pdf file
  • size 8,27 MB
  • added by
  • info modified
Cooper K., Torczon L. Engineering a Compiler
Elsevier, 2012, -825 p.
The practice of compiler construction changes continually, in part because the designs of processors and systems change. For example, when we began to write Engineering a Compiler (eac) in 1998, some of our colleagues questioned the wisdom of including a chapter on instruction scheduling because out-of-order execution threatened to make scheduling largely irrelevant. Today, as the second edition goes to press, the rise of multicore processors and the push for more cores has made in-order execution pipelines attractive again because their smaller footprints allow the designer to place more cores on a chip. Instruction scheduling will remain important for the near-term future.
At the same time, the compiler construction community continues to develop new insights and algorithms, and to rediscover older techniques that were effective but largely forgotten. Recent research has created excitement surrounding the use of chordal graphs in register allocation (see Section 13.5.2). That work promises to simplify some aspects of graph-coloring allocators. Brzozowski’s algorithm is a dfa minimization technique that dates to the early 1960s but has not been taught in compiler courses for decades (see Section 2.6.2). It provides an easy path from an implementation of the subset construction to one that minimizes dfas. A modern course in compiler construction might include both of these ideas.
How, then, are we to structure a curriculum in compiler construction so that it prepares students to enter this ever changing field? We believe that the course should provide each student with the set of base skills that they will need to build new compiler components and to modify existing ones. Students need to understand both sweeping concepts, such as the collaboration between the compiler, linker, loader, and operating system embodied in a linkage convention, and minute detail, such as how the compiler writer might reduce the aggregate code space used by the register-save code at each procedure call.
Overview of Compilation
Scanners
Parsers
Context-Sensitive Analysis
Intermediate Representations
The Procedure Abstraction
Code Shape
Introduction to Optimization
Data-Flow Analysis
Scalar Optimizations
Instruction Selection
Instruction Scheduling.
Register Allocation
A ILOC
B Data Structures
  • Sign up or login using form at top of the page to download this file.
  • Sign up
Up