Modern Compiler Implementation in C
This new, expanded textbook describes all phases of a modern compiler: lexical analysis, parsing, abstract syntax, semantic actions, intermediate representations, instruction selection via tree matching, dataflow analysis, graph-coloring register allocation, and runtime systems. It includes good coverage of current techniques in code generation and register allocation, as well as functional and object-oriented languages, that are missing from most books. In addition, more advanced chapters are now included so that it can be used as the basis for a two-semester or graduate course. The most accepted and successful techniques are described in a concise way, rather than as an exhaustive catalog of every possible variant. Detailed descriptions of the interfaces between modules of a compiler are illustrated with actual C header files. The first part of the book, Fundamentals of Compilation, is suitable for a one-semester first course in compiler design. The second part, Advanced Topics, which includes the advanced chapters, covers the compilation of object-oriented and functional languages, garbage collection, loop optimizations, SSA form, loop scheduling, and optimization for cache-memory hierarchies.
- Keeps up with the revolution in computer architecture since 1985, covering current techniques in instruction selection, code generation, register allocation
- Excellent coverage of practical back-end code generation issues not available in most texts
- Well designed implementation project, with chapter-by-chapter programming assignments, so the resulting 'student compiler' is simple but high-tech and modern
- Uses the C programming language for exercises and examples
- Four new chapters - Static Single-Assignment Form, Polymorphic Types, Pipelining and Scheduling, and the Memory Heirarchy
- A new section on parsing with automatic syntax-error repair
- Some sections of the Register Allocation and Canonical Trees chapters have been completely rewritten to improve the clarity of explanation
- All chapters have more pencil-and-paper exercises and Further Reading sections
Product details
July 2004Paperback
9780521607650
556 pages
243 × 179 × 31 mm
0.96kg
80 b/w illus. 34 tables 117 exercises
Available
Table of Contents
- Part I. Fundamentals of Compilation:
- 1. Introduction
- 2. Lexical analysis
- 3. Parsing
- 4. Abstract syntax
- 5. Semantic analysis
- 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. Polymorphic types
- 17. Dataflow analysis
- 18. Loop optimizations
- 19. Static single-assignment form
- 20. Pipelining and scheduling
- 21. The memory hierarchy
- Appendix.