Andrew W. AppelCambridge University Press, 8/21/2008EAN 9780521607643, ISBN10: 0521607647Paperback, 552 pages, 24.6 x 19 x 2.8 cmLanguage: EnglishThis 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 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.Part I. Fundamentals of Compilation1. Introduction2. Lexical analysis3. Parsing4. Abstract syntax5. Semantic analysis6. Activation records7. Translation to intermediate code8. Basic blocks and traces9. Instruction selection10. Liveness analysis11. Register allocation12. Putting it all togetherPart II. Advanced Topics13. Garbage collection14. Object-oriented languages15. Functional programming languages16. Polymorphic types17. Dataflow analysis18. Loop optimizations19. Static single-assignment form20. Pipelining and scheduling21. The memory hierarchyAppendix.