Modern Compiler Implementation in C
/ Andrew W. Appel and Maia Ginsburg
- New Delhi Cambridge University Presss 2014
- x, 544p. : ill. ; Book 24cm
It includes Appendix, Bibliography and Index Pages 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