| Title(URL) | Author | language | Book | Blog/WebBased | Journal | Theory | Implementation | Free | End-to-End | Notes |
|---|---|---|---|---|---|---|---|---|---|---|
| What Every Computer Scientist Should Know About Floating-Point Arithmetic | David Goldberg | -- | ✖ | ✖ | ✔ | ✔ | ✖ | ✔ | ✖ | -- |
| Zen of Code Optimization: The Ultimate Guide to Writing Software That Pushes PCs to the Limit Paperback – December 8, 1994 | Michael Abrash | ASM/C | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | -- |
| Michael Abrash's Graphics Programming Black Book (Special Edition) Paperback – July 1, 1997 | Michael Abrash | ASM/C | ✔ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | -- |
| Programming from the Ground Up | Jonathan Bartlett | ASM/C | ✔ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | -- |
| Assemblers And Loaders. | David Salomon | ASM | ✔ | ✖ | ✖ | ✔ | ✔ | ✔ | ✖ | -- |
| Linkers And Loaders. | John R. Levine | ASM/C | ✔ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | -- |
| The Assembler Developer's Kit | Unknown | ASM | ✔ | ✔ | ✖ | ✔ | ✔ | ✔ | ✔ | -- |
| An Introduction to the C Programming Language and Software Design | Tim Bailey | C | ✔ | ✖ | ✖ | ✔ | ✔ | ✔ | ✖ | -- |
| Low-Level Programming: C, Assembly, and Program Execution on Intel® 64 Architecture | Igor Zhirkov | ASM/C | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | -- |
| C in a Nutshell | Peter Prinz, Tony Crawford | C | ✔ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | -- |
| Intermediate C Programming | Yung-Hsiang Lu | C | ✔ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | -- |
| Comparing Compiler Optimizations | John Regehr | ASM | ✖ | ✔ | ✖ | ✖ | ✖ | ✔ | ✖ | -- |
| Hacker's Delight | Henry S. Warren | C | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | -- |
| Art of Assembly Language, 2nd Edition | Randall Hyde | ASM | ✔ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | -- |
| https://www.amazon.com/Peter-Nortons-Assembly-Language-Book/dp/0136619010 | Peter Norton | ASM/C | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✔ | It goes through lessons that build up to a pretty good interactive disk editor (DSKPATCH) written entirely in x86 assembly. |
| Title(URL) | Author | language | Book | Blog/WebBased | Journal | Theory | Implementation | Free | End-to-End | Notes |
|---|---|---|---|---|---|---|---|---|---|---|
| Stackoverflow Learning to write a compiler | Multiple | -- | ✖ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ | -- |
| Compiler connection book list | Multiple | -- | ✖ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ | -- |
| The Journal of C Language Translation | Multiple | C | ✖ | ✖ | ✔ | ✔ | ✖ | ✔ | ✖ | was a quarterly publication aimed specifically at implementers of C and C++ language translators such as compilers, interpreters, preprocessors, language-to-C and C-to-language translators, static analysis tools, cross-reference tools, parser generators, lexical analyzers, syntax-directed editors, validation suites, and the like. |
| Programming Languages: Application and Interpretation Copyright © 2003-07 | Shriram Krishnamurthi | Scheme | ✔ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | -- |
| Essentials of Programming Languages - Third Ed. | Daniel P. Friedman & Mitchell Wand | Scheme | ✔ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | 1st ed alone shows how to turn an interpreter into a continuation-based compiler. |
| Constraint Programming Languages Their Specification and Generation Paperback – July 1, 1987 | Wm Leler | -- | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | -- | -- |
| Programming Language Concepts for Software Developers Peter Sestoft IT University of Copenhagen, Denmark | Peter Sestoft | F# | ✔ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | Covers: Garbage collection, Continuations, locally optimizing compilers & Reflection |
| Basics of Compiler Design | Torben Ægidius Mogensen | -- | ✔ | ✖ | ✖ | ✔ | ✖ | ✔ | ✖ | -- |
| Build Your Own Lisp | Daniel Holden | C | ✔ | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | -- |
| Introduction to Compilers and Language Design A free online textbook | Douglas Thain | C | ✔ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | -- |
| Compiler Building Tutorial Let’s Build a Compiler | Jack W. Crenshaw | Pascal | ✔ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | -- |
| A Problem Course in Compilation: From Python to x86 Assembly , November 6, 2009 | Jeremy G. Siek | Python | ✔ | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | -- |
| Writing Compilers and Interpreters: an applied approach using c++ 2nd Edition | Ronald Mak | C++ | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✔ | -- |
| Game Scripting Mastery (Premier Press Game Development) Paperback – December 18, 2002 | Alex Varanese, Andre Lamothe | C | ✔ | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | -- |
| Crafting a Compiler with C 1st Edition | Charles N. Fischer, Richard J. LeBlanc Jr | C | ✔ | ✖ | ✖ | ✖ | ✔ | ✖ | ✔ | -- |
| Advanced Compiler Design and Implementation 1st Edition | Steven Muchnick | C | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✔ | Great book. Must read if you're serious about optimizations. The core here is the code analysis and optimization techniques, over 600 pages of discussion. |
| The Art of Compiler Design: Theory and Practice 1st Edition | Thomas Pittman | Pascal | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | Covers: RISC and Pipeline Processor Scheduling. |
| A Retargetable C Compiler: Design and Implementation 1st Edition | David R. Hanson | C | ✔ | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | Literal Programming program, however doesn't cover advanced topics such as code optimizations |
| Engineering: A Compiler 2nd Edition | Keith Cooper | C | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | Covers: hot topics like optimization (and related data-structures like SSA) and code-generation |
| Anatomy of LISP | John R. Allen | Common Lisp | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✔ | -- |
| Let Over Lambda – April 2, 2008 | Doug Hoyte | Common Lisp | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | Covers: lexical closures, lexical, dynamic and other types of scoping, it contains a solid discussion of metaprogramming in general and practical use of Lisp macros |
| Programming Language Fundamentals by Example 1st Edition | D.E. Stevenson | Forth | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✔ | -- |
| Introduction to Compiling Techniques: A First Course Using ANSI C, Lex, and Yacc | J. P. Bennett | C | ✔ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | -- |
| Programming Language Pragmatics 4th Edition | Michael L. Scott | Multiple | ✔ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | thorough a survey of programming languages and their design challenges/decisions |
| Lisp in Small Pieces | Christian Queinnec | Common Lisp | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | -- |
| Modern Compiler Implementation ML or JAVA or C - ©1998 | Andrew W. Appel | C OR ML OR Java | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✔ | -- |
| Trustworthy Compilers 1st Edition | Vladimir O. Safonov | -- | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | discusses pragmatic ways for how you can increase confidence that (a) you implemented it correctly (b) the users of your compiler trust the code does what it says it does [such as good error messages essential to a compiler for an IDE]. Also a section is devoted to Microsoft's compiler toolset named Phoenix which is used (accordingly to some articles I've found on Microsoft's sites) in Midori, a new OS incubation project. |
| Yacc is dead | Matthew Might & David Darais | Mathematical Notation | ✖ | ✖ | ✔ | ✔ | ✖ | ✔ | ✖ | -- |
| A Nanopass Framework for Compiler Education∗ | Dipanwita Sarkar, Oscar Waddell, R. Kent Dybvig | Scheme | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | ✖ | -- |
| Parsing with Derivatives A Functional Pearl | Matthew Might, David Darais, Daniel Spiewak | Scheme | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | ✖ | Author Notes: Parsing with derivatives |
| Compiling with Continuations Revised ed. Edition | Andrew W. Appel | Standard ML | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✔ | -- |
| Building an Optimizing Compiler | Bob Morgan | Pascal | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | From Review: The book describes the various phases the intermediate language of a compiler goes through before the final assembly or object file is written. It discusses such things as SSA form, lazy code motion and its application to load and store motion, scheduling, register allocation, etc. Important concepts, including (but not limited to) correctness, dominance, control dependence, and availability, are discussed and explained in detail. Algorithms and data flow equations are given with a proof and a clear explantaion. (...) There are only 3 drawbacks of this book. First of all, Morgan assumes that the target is a RISCy machine with a reasonably orthogonal register and instruction set. Second, the framework he presents is sometimes a bit unconventional. For example, his discussion about register allocation presents Chow&Hennesey priority bases graph coloring, but it forgets to give a proper comment on Chaitin/Briggs style coloring. Finally, the book exclusively describes intraprocedural optimizations. |
| Compiling Algorithms for Heterogeneous Systems (Synthesis Lectures on Computer Architecture) | Steven Bell, Jing Pu, James Hegarty | -- | ✔ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | -- |
| Compiler Construction | Niklaus Wirth | Pascal | ✔ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | -- |
| Compiler design in C | Allen I Holub | C | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✔ | -- |
| Project Oberon: The Design of an Operating System and Compiler (Acm Press Books) Hardcover – November 1, 1992 | Niklaus Wirth | Pascal | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | -- |
| Parsing Techniques: A Practical Guide (Monographs in Computer Science) 2nd ed. 2008 Edition | Dick Grune (Author), Ceriel J.H. Jacobs (Contributor) | -- | ✔ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | -- |
| Compilers Coursebook | Mike Spivey | OCaml | ✔ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | -- |
| Modern Compiler Design - Second Edition | Dick Grune, Kees van Reeuwijk, Henri E. Bal, Ceriel J.H. Jacobs, and Koen G. Langendoen | -- | ✔ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | -- |
| Computer Architecture: A Quantitative Approach, 4th Edition | Hennessy and Patterson | -- | ✔ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | good Computer Architecture books cover a quite a bit about the basic optimizations of a modern compiler. |