See also my tech blog.
- Padraic Edgington's videos
- Design of Digital Circuits, ETH Zurich, Onur Mutlu, Spring 2019
- Basic CPU design course, LC-3, MIPS, FPGA, Vivado, Basys 3
- High Performance Computer Architecture, Georgia Tech CS6290
- Pipelining, etc.
- Performance Engineering of Software Systems, MIT 6.172, Leiserson and Shun, Fall 2018
- computationalstructures.org (MIT 6.004)
- Microprocessor Design (wikibooks)
Simple / Educational Register-machines:
- LC-3 (and LC-3b, LC-4)
- ZipCPU, projects, blog
- SAP-1 (and SAP-2, SAP-3)
- "Build an 8-bit computer from scratch" (Ben Eater)
- "SAP-1(Simple as Possible-1) Computer Architecture Introduction" (Shirish Koirala)
- RiSC-16 1, 2, 3, 4, 5, 6
- from the community: 1
- CARDIAC, the cardboard CPU simulator
Simple / Educational Stack-machines:
The cult of SUBLEQ
OISC: One Instruction Set Computers!
Compilers, Interpreters, Language Design, etc.
- "bootstrapping" wiki
- "Programming thought experiment: stuck in a room with a PC without an OS"
- "Bootstrapping a simple compiler from nothing" (Edmund Grimley-Evans)
- "Let's Build a Compiler" (Noah Zentzis) 1, 2, 3, 4
- "Developing Statically Typed Programming Language" (Minko Gechev)
- "A Simple Scheme Compiler" (from "An Introduction to Scheme and its Implementation")
- An Incremental Approach to Compiler Construction
- Essentials of Compilation: An Incremental Approach
- Programming Languages: Application and Interpretation
Simple interpreter codebases to study
- "A micro-manual for LISP Implemented in C"
- "Lisp in Less Than 200 Lines of C"
- uLisp: Implementation guide, uLisp-esp32
- esp-lisp: github, wiki, talk, talk
- femtolisp, in particular the tiny directory.
- PreScheme, manual
Simple compiler codebases to study
- figure out why this is so much faster than other C compilers.
- lcc (github)
- Small C Compilers
- Ur-Scheme (Scheme-to-x86-ASM)
- Marc Feeley's "90-minute Scheme-to-C compiler"
- Schism (Scheme to WASM)
- ichbins (Lisp-to-C)
- Design Principles Behind Smalltalk
- Berkeley Programming Language Prelim Syllabus (1998)
- "This syllabus gives an overview of the background expected for students planning to do PhD research in Programming Languages"
Optimization and JIT'ing
- LuaJIT and DynASM
- GNU LibJIT
- LLVM On-Request Compilation (ORC)
- Mozilla Nanojit
- Ask HN: JIT Compiler Landscape of 2019?
- stochastic assembly optimizer
- DannyB2 on the JVM's C1 and C2
- "Making a RISC-V Operating System using Rust" (Stephen Marz)
- https://www.destroyallsoftware.com/screencasts has a great set of from-scratch screencasts (paid)
- Calling Python from Clojure
- "What is the difference between C, C99, ANSI C and GNU C?"
- "Some things every C programmer should know about C" (Peter Klausler)
- google images q=julia+evans+sql
- joins poster