Synopsis: 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, which are missing from most books on the topic. The author illustrates the most accepted and successful techniques in a...