Home

Awesome

compilers-resources

A list of compiler (mostly) and programming language related resources

Index

General

Books

Crafting Interpreters - Awesome guide that covers lexing, parsing, compiling the ast to bytecode, garbage collection and a bit of optimization. Extremely useful resource even if it is centered around interpreters.

Compilers, Principles, Techniques and Tools (2nd Edition) (also known as The Dragon's Book) - One of the most popular books ever about compiler design. It covers almost every possible area there is, from the frontend to the backend.

Acwj - A compiler writing journey. A step-to-step introduction to compiler design.

Frontend

Lexers

Parsers

Type systems

Backend

IRs

Sea of Nodes

https://darksi.de/d.sea-of-nodes/

https://github.com/SeaOfNodes/Simple

Implementations

v8 (not sure if this is the right file)

LibFirm

RVSDG

RVSDG's paper

Implementations

JLM - RVSDG's reference implementation.

Rain - An RVSDG implementation in Rust

Optir - An attempt to combine RVSDG and Equivalence graphs

Optimizations

Mem2Reg under the hood - Explains more indepth about mem2reg

Equivalence Graphs (egraphs)

https://bernsteinbear.com/blog/whats-in-an-egraph/

Analysis

Liveness analysis

https://www.cl.cam.ac.uk/teaching/1718/OptComp/slides/lecture03.pdf

https://www.inf.ed.ac.uk/teaching/courses/ct/17-18/slides/llvm-4-liveness.pdf

https://klasses.cs.uchicago.edu/archive/2004/spring/22620-1/docs/liveness.pdf

Assemblers

X86 WinFastCall Reference - A reference for the x86 Windows Fastcall Calling Convention Wasm instruction Reference - Reference of wasm instructions and their encoding

Linkers

General Implementations

LLVM Cranelift Qbe Ygen B3 and B3-rs TurboFan Maglev LibFirm

Misc

JIT

Runtime

Loaders

Dynamic Linking

See also

Qbe's Bib

Max Bernstein's PL-Resources