https://keleshev.com/compiling-to-assembly-from-scratch/#table-of-contents Compiling to Assembly from Scratch Buy hardcover $49 at lulu.com Read online for free Have you been trying to learn how compilers and programming languages work? Then come along! Let's make a compiler that goes all the way from source to assembly from scratch--no shortcuts! This book will teach you enough compiler theory and assembly programming to get going. It uses a subset of TypeScript that reads like pseudocode and targets ARM 32-bit instruction set. Table of Contents 1. Introduction 2. TypeScript Basics Part I: Baseline Compiler 3. High-level Compiler Overview 4. Abstract Syntax Tree 5. Parser Combinators 6. First Pass: The Parser 7. ARM Assembly Programming 8. Second Pass: Code Generation Part II: Compiler Extensions 9. Introduction to Part II 10. Primitive Scalar Data Types 11. Arrays and Heap Allocation 12. Visitor Pattern 13. Static Type Checking and Inference 14. Dynamic Typing 15. Garbage Collection Appendices A. Running ARM Programs B. GAS v. ARMASM Syntax [keleshev] Author My name is Vladimir Keleshev. I am a software developer living and working just outside of Copenhagen. I have worked with embedded systems, safety-critical systems, compilers, and now in finance with domain-specific languages. Illustrator The cover is illustrated by Katiuska Pino. She also drew 15 chapter illustrations that are exclusive to the print edition of the book. Print edition Print edition consists of 207 pages, size 6x9" (152x229 mm), in matte hard cover, available at lulu.com. ISBN: 978-87-980078-0-7. Ebook edition This book was originally published in 2020 as ebook. The online edition replaces the ebook edition. Citation @book{Keleshev:2024, author="Vladimir Keleshev", title="Compiling to Assembly from Scratch", publisher="keleshev.com", year=2024, isbn="978-87-980078-0-7", note="Originally published in 2020 as ebook", } Source code Source code from the book is available on GitHub. Python and OCaml ports of the compiler are available as well. Questions? Comments? Feedback? * Email me at vladimir@keleshev.com, * DM me at @keleshev, or * Open an issue or a pull request on GitHub. [spike]