This comprehensive textbook covers all aspects of compiler design, spanning lexical analysis, parsing, abstract syntax, semantic actions, intermediate representations, instruction selection through tree matching, dataflow analysis, graph-coloring register allocation, and runtime systems. It provides in-depth insights into current techniques in code generation and register allocation, encompassing the compilation of functional and object-oriented languages. The book presents well-established and successful techniques, featuring practical illustrations using actual Java^TM® classes.
The initial section is suitable for a one-semester introductory course in compiler design. The subsequent part, covering the compilation of object-oriented and functional languages, garbage collection, loop optimization, SSA form, instruction scheduling, and optimization for cache-memory hierarchies, is designed for a second-semester or graduate course. This new edition incorporates additional discussion on Java and object-oriented programming concepts, including visitor patterns and a new Mini-Java programming project. A distinctive aspect is the newly redesigned compiler project in Java, focusing on a subset of Java itself, encompassing both front-end and back-end phases.
Download
See also
- Software Exorcism: A Handbook for Debugging and Optimizing Legacy Code by Bill Blunden (2003)
- Hormones and the Endocrine System: Textbook of Endocrinology by Bernhard Kleine (2016)
- Genetics: A Conceptual Approach 6e by Benjamin A. Pierce (2017)
- A Functional Approach to Java by Ben Weidig (2022)
- Calculus of variations and optimal control by Amol Sasan (2005)