Advanced compiler design and implementation by Muchnick, Steven S
Overall there is a lot of good stuff in here, and it is worth owning if you are interested in optimization techniques (the basics of making a CS 101 compiler are not covered at all — this is an advanced book on optimizations).Now for the bad: the presentation is often vague and confusing. Concepts are used and only explained later, variables with cryptic names are used without explaining what they represent, subtly wrong definitions are given of mathematical concepts, and so on.Examples of input to be optimized are given either in C (in the K&R dialect that was already outdated nearly a decade before this book was published), or in an intermediate representation of the author’s invention. Examples of machine code output are mostly for computers that are no longer used in practice (although x86 is mentioned).Descriptions of compiler algorithms are in a pseudocode invented by the author.Overall it feels more like rambling lecture notes than a coherent textbook.Again, it’s worth owning for the content, but understand that you’ll often have to look things up elsewhere to get a clear picture, or puzzle over them for a while. Luckily the book has a very good bibliography. I couldn’t understand the material on data flow analysis at all until I went back and read the original paper (“A Unified Approach to Global Program Optimization”, Kildall 1973), which covers much of the same material but is infinitely clearer.