home
blog
homelab
favourites
resources
ideas
resources
Collection of my favourite CS-related resources.
Tools:
Compiler Explorer
: Interactive online compiler
X64/86 Assembler
Compiler backends:
LLVM
TPDE
: A Fast Adaptable Compiler Back-End Framework
QBE
TB
Compiler backend formats:
Static Single Assignment:
Efficiently Computing Static Single Assignment Form and the Control Dependence Graph
Simple and Efficient Construction of Static Single Assignment Form
An Efficient Method of Computing Static Single Assignment Form
Lecture Notes on Static Single Assignment Form
SSA Translation is an Abstract Interpretation
Static Single Assignment Book
SSA - Final
Sea of Nodes:
A Simple Graph-Based Intermediate Representation
Combining Analyses, Combining Optimizations
Semantic reasoning about the sea of nodes
Simple
Other:
Compiler Representations for Heterogeneous Processing
FIRM — A Graph-Based Intermediate Representation
Compiler optimization:
Exploiting Superword Level Parallelism with Multimedia Instruction Sets
Optimizing compilation with the Value State Dependence Graph
Implementation Strategies for Mutable Value Semantics
Constant Propagation with Conditional Branches
Fast Liveness Checking for SSA-Form Programs
Branch/cmove and compiler optimizations
SSA Elimination after Register Allocation
A Data Locality Optimizing Algorithm
A Simple, Fast Dominance Algorithm
Common Misconceptions about Compilers
Global Value Numbering
Function Outlining
Register allocation:
Linear Scan Register Allocation in the Context of SSA Form and Register Constraints
Tailoring Graph-coloring Register Allocation For Runtime Compilation
Optimized Interval Splitting in a Linear Scan Register Allocator
A Generalized Algorithm for Graph-Coloring Register Allocation
The Solid-State Register Allocator
Linear Scan Register Allocation on SSA Form
Linear Scan Register Allocation
Iterated Register Coalescing
Code size:
Code Factoring in GCC
Code generation:
Accurate Throughput Prediction of Basic Blocks on Recent Intel Microarchitectures
Engineering a Simple, Efficient Code Generator Generator
Perceus: Garbage Free Reference Counting with Reuse
Near-Optimal Instruction Selection on DAGs
Instruction Selection on SSA Graphs
Copy-and-Patch Compilation
Instruction Scheduling
x64/86:
X86 Opcode and Instruction Reference
X86-64 Instruction Encoding
Assembly Optimization Tips
Modern Microprocessors
Instruction Database
Instruction Latency
Books on compilers:
Compilers - Principles, Techniques, & Tools
Understanding and Writing Compilers
Compiler Construction
Compiler Design in C