Modern Compiler Implementation in ML
This textbook explains all phases of a modern compiler: lexical analysis, parsing, abstract syntax, semantic actions, intermediate representations, instruction selection via tree matching, dataflow analysis, graph-colouring register allocation with coalescing, and runtime systems. It covers current techniques in code generation and register allocation, as well as functional and object-oriented languages. The author illustrates the most accepted and successful techniques in a concise way, rather than as an exhaustive catalogue of every possible variant. Detailed descriptions of the interfaces between the modules of a compiler are illustrated with actual ML signatures. A unique feature of the book is a well-designed compiler implementation project in ML, including front-end and 'high-tech' back-end phases, so that students can build a complete working compiler in one semester.
The textbook is meant for use in a one-semester first course for undergraduates in compiler design. Accompanying software is available.
- Covers current computer architecture, techniques in instruction selection, code generation, register allocation
- Covers imperative, functional, and object-oriented languages
- Covers practical 'back-end' code generation issues not available in most texts
- Well-designed implementation project, with chapter-by-chapter programming assignments. Resulting 'student compiler' is simple but high-tech and modern
- Uses the ML programming language for exercises and examples
Product details
No date availableHardback
9780521582759
400 pages
243 × 193 × 26 mm
0.92kg
45 b/w illus. 34 tables 100 exercises
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. Dataflow analysis
- 17. Loop optimizations
- Appendix: Tiger language reference manual.