Writing a C Compiler | Build a Real Programming Language from Scratch | Nora Sandler | July 2024 | No Starch Press | 792 pages | ISBN-13: 9781718500426

2 years ago by ericjmorey to c/c_lang

A fun, hands-on guide to writing your own compiler for a real-world programming language.

Book Description

Writing a C Compiler will take you step by step through the process of building your own compiler for a significant subset of C—no prior experience with compiler construction or assembly code needed. Once you’ve built a working compiler for the simplest C program, you’ll add new features chapter by chapter. The algorithms in the book are all in pseudocode, so you can implement your compiler in whatever language you like. Along the way, you’ll explore key concepts like:

  • Lexing and parsing: Learn how to write a lexer and recursive descent parser that transform C code into an abstract syntax tree.
  • Program analysis: Discover how to analyze a program to understand its behavior and detect errors.
  • Code generation: Learn how to translate C language constructs like arithmetic operations, function calls, and control-flow statements into x64 assembly code.
  • Optimization techniques: Improve performance with methods like constant folding, dead store elimination, and register allocation.

Compilers aren’t terrifying beasts—and with help from this hands-on, accessible guide, you might even turn them into your friends for life.

Author Bio

Nora Sandler is a software engineer based in Seattle. She holds a BS in computer science from the University of Chicago, where she researched the implementation of parallel programming languages. More recently, she’s worked on domain-specific languages at an endpoint security company. You can find her blog on pranks, compilers, and other computer science topics at https://norasandler.com/.

pomfritten 11 points 2 years ago path: 0 11808355, hotness: undefined, score: 11, children: 2
ericjmorey 5 points 2 years ago

Calm down, sadist.

path: 0 11808355 11808642, hotness: undefined, score: 5, children: 0
recursive_recursion 3 points 2 years ago

oh gods😬🫠

path: 0 11808355 11808790, hotness: undefined, score: 3, children: 0
SamiDena 2 points 2 years ago
path: 0 11809397, hotness: undefined, score: 2, children: 4
ericjmorey 2 points 2 years ago

I'm not sure what to make of your comment.

path: 0 11809397 11810622, hotness: undefined, score: 2, children: 3
SamiDena 2 points 2 years ago
path: 0 11809397 11810622 11811630, hotness: undefined, score: 2, children: 2
ericjmorey 1 point 2 years ago

I appreciate your sharing of recommendations for other resources that you are familiar with. That's genuinely helpful.

However, while I agree that those you mentioned publishers don't have high minimum standards for author selection or editing (to varying degrees among them), I disagree that all of their books are garbage and that none of their authors have a genuine interest in passing on knowledge.

With that in mind, I'd be interested in reading what distinguishes this book as a "coffee table book" beyond it being published by No Starch Press. That is, what about the content of this book falls short as an introductory resource for the subject for those curious about compilers?

path: 0 11809397 11810622 11811630 11812096, hotness: undefined, score: 1, children: 1
SamiDena 4 points 2 years ago
path: 0 11809397 11810622 11811630 11812096 11812306, hotness: undefined, score: 4, children: 0
c_lang
c_lang

@programming.dev

login for more options
1357
103
33

Welcome to the C community!

C is quirky, flawed, and an enormous success.
... When I read commentary about suggestions for where C should go, I often think back and give thanks that it wasn't developed under the advice of a worldwide crowd.
... The only way to learn a new programming language is by writing programs in it.

© Dennis Ritchie

🌐 https://en.cppreference.com/w/c

go to feed...