mhtirogla
Home
Systems
API
Pricing
About
Log in
← Back
Home
›
Systems
›
Compilers and language tooling
decompiler
binary decompiler and analysis
Ghidra, IDA
System
Techniques · 13
Primitives · 24
decompiler
Alias analysis
compilers · medium: Decide whether two pointers may refer to the same memory (Andersen, Steensgaard, type-based) to enable optimizations
Binary lifting to ir
compilers · medium: Translate machine instructions into a semantic IR (p-code, LLVM IR) with explicit flags and memory effects
Cfg recovery
compilers · medium: Recover functions and control-flow graphs from binaries: recursive descent, jump tables, tail calls
Dataflow analysis
compilers · medium: Compute a fact per program point (live variables, reaching definitions, available expressions) by iterating transfer functions over the CFG to a fixed point.
›
Function fingerprinting
compilers · medium: Identify library functions in binaries via byte signatures and hashes with wildcards (FLIRT-style)
Sparse conditional constant propaga…
compilers · medium: SCCP: constant propagation plus unreachable-code detection on SSA
Structured control flow
compilers · medium: Turn a jump graph into nested block, loop and if constructs with numbered breaks; reducible graphs need no duplication.
›
SSA form
compilers · low: Give every variable exactly one definition, merging at joins with phi functions; def-use becomes explicit and optimizations turn sparse and cheap.
›
Disassembly
compilers · low: Instruction decoding for x86 (prefixes, ModRM, variable length) and ARM; linear sweep vs recursive traversal
Dominator tree
compilers · low: Dominators via Lengauer-Tarjan or Cooper-Harvey-Kennedy; dominance frontiers for SSA
Executable formats elf pe
compilers · low: ELF, PE and Mach-O: sections, segments, symbol tables, relocations, dynamic loading
Unification
compilers · low: First-order unification with union-find and occurs check; basis of type inference and logic programming
Calling conventions abi
compilers · low: System V, Windows x64 and AAPCS64 ABIs: argument registers, stack frames, struct passing, FFI
Union-find
graphs · low: Disjoint-set forest with union by size and path compression; merges sets and answers same-set queries in effectively constant time.
›
Control-flow graph
compilers · low: Split a linear instruction list into basic blocks and connect them by jumps; the graph every optimizer, SSA builder and dataflow pass walks.
›
Topological sort
graphs · low: Order the vertices of a DAG so every edge points forward; the core of build systems, schedulers and dependency resolution, with cycle detection for free.
›
Fast hash functions
data-structures · low: Non-cryptographic hashes built from 64×64→128-bit multiplies and xor-shifts; pick by key size, trust level and whether the hash is persisted.
›
Radix trie
data-structures · low: Compressed prefix tree for path routing, domain matching and prefix lookups
Strongly connected components
graphs · low: Tarjan/Kosaraju SCCs for cycle detection in dependency graphs
Simplex method
optimization · low: Solves linear programs by walking along the edges of the feasible polytope from vertex to vertex, one basis swap (pivot) at a time; the workhorse behind MIP solvers.
›
Hash consing
data-structures · low: Intern structurally equal immutable terms so equality is pointer comparison and sharing is maximal
Arithmetic circuits
hardware-os · low: Adder and multiplier circuits: carry-lookahead, prefix adders, Booth encoding, Wallace and Dadda trees
Tseitin transformation
optimization · low: Linear-size CNF encoding of formulas with auxiliary variables
+ 6 more techniques
+ 8 more primitives
System
Techniques · 13
Primitives · 24
decompiler
Alias analysis
compilers · medium: Decide whether two pointers may refer to the same memory (Andersen, Steensgaard, type-based) to enable optimizations
Binary lifting to ir
compilers · medium: Translate machine instructions into a semantic IR (p-code, LLVM IR) with explicit flags and memory effects
Cfg recovery
compilers · medium: Recover functions and control-flow graphs from binaries: recursive descent, jump tables, tail calls
Dataflow analysis
compilers · medium: Compute a fact per program point (live variables, reaching definitions, available expressions) by iterating transfer functions over the CFG to a fixed point.
›
Function fingerprinting
compilers · medium: Identify library functions in binaries via byte signatures and hashes with wildcards (FLIRT-style)
Sparse conditional constant propaga…
compilers · medium: SCCP: constant propagation plus unreachable-code detection on SSA
Structured control flow
compilers · medium: Turn a jump graph into nested block, loop and if constructs with numbered breaks; reducible graphs need no duplication.
›
Symbolic execution
compilers · medium: Explore program paths with symbolic inputs and SMT-checked path constraints
Type recovery
compilers · medium: Infer variable and struct types from binary code via constraint solving
Dpll t
optimization · medium: SMT architecture: CDCL over boolean abstraction plus theory solvers, theory propagation, Nelson-Oppen
Congruence closure
compilers · medium: Union-find over terms with congruence propagation; decides equality with uninterpreted functions
Bit blasting
optimization · medium: Reduce bit-vector constraints to CNF via adder, multiplier and comparator circuits
CDCL SAT solving
optimization · medium: Search for a satisfying assignment, learn a new constraint from every dead end, and jump back past irrelevant choices; handles industrial formulas with millions of clauses.
›
SSA form
compilers · low: Give every variable exactly one definition, merging at joins with phi functions; def-use becomes explicit and optimizations turn sparse and cheap.
›
Disassembly
compilers · low: Instruction decoding for x86 (prefixes, ModRM, variable length) and ARM; linear sweep vs recursive traversal
Dominator tree
compilers · low: Dominators via Lengauer-Tarjan or Cooper-Harvey-Kennedy; dominance frontiers for SSA
Executable formats elf pe
compilers · low: ELF, PE and Mach-O: sections, segments, symbol tables, relocations, dynamic loading
Unification
compilers · low: First-order unification with union-find and occurs check; basis of type inference and logic programming
Calling conventions abi
compilers · low: System V, Windows x64 and AAPCS64 ABIs: argument registers, stack frames, struct passing, FFI
Union-find
graphs · low: Disjoint-set forest with union by size and path compression; merges sets and answers same-set queries in effectively constant time.
›
Control-flow graph
compilers · low: Split a linear instruction list into basic blocks and connect them by jumps; the graph every optimizer, SSA builder and dataflow pass walks.
›
Topological sort
graphs · low: Order the vertices of a DAG so every edge points forward; the core of build systems, schedulers and dependency resolution, with cycle detection for free.
›
Fast hash functions
data-structures · low: Non-cryptographic hashes built from 64×64→128-bit multiplies and xor-shifts; pick by key size, trust level and whether the hash is persisted.
›
Radix trie
data-structures · low: Compressed prefix tree for path routing, domain matching and prefix lookups
Strongly connected components
graphs · low: Tarjan/Kosaraju SCCs for cycle detection in dependency graphs
Simplex method
optimization · low: Solves linear programs by walking along the edges of the feasible polytope from vertex to vertex, one basis swap (pivot) at a time; the workhorse behind MIP solvers.
›
Hash consing
data-structures · low: Intern structurally equal immutable terms so equality is pointer comparison and sharing is maximal
Arithmetic circuits
hardware-os · low: Adder and multiplier circuits: carry-lookahead, prefix adders, Booth encoding, Wallace and Dadda trees
Tseitin transformation
optimization · low: Linear-size CNF encoding of formulas with auxiliary variables
d-ary heap
data-structures · low: Array heap with d children per node (d = 4 typical): half the binary heap's depth, siblings in one cache line, faster priority queues.
›
Drat proof certificates
optimization · low: DRAT and LRAT proofs emitted by SAT solvers and checked independently
Two watched literals
optimization · low: Unit propagation for SAT that watches just two literals per clause, so backtracking costs nothing and long clauses are rarely touched.
›
Arena allocator
systems · low: Allocate by bumping a pointer through big chunks and free everything at once: a few instructions per allocation for objects sharing a lifetime.
›
BFS and DFS
graphs · low: The two basic graph traversals; BFS gives hop distances and levels, DFS gives discovery/finish order for cycles, components and topological order.
›
Floating-point error
numerics · low: How IEEE 754 rounding error accumulates and how to contain it: compensated (Kahan/Neumaier) and pairwise summation, error-free transformations with FMA, ULP comparisons.
›
LU and Cholesky factorization
numerics · low: Factor A = PLU (any square matrix, partial pivoting) or A = LLᵀ (SPD) once in O(n³), then solve each right-hand side in O(n²).
›
Sparse matrices (CSR)
numerics · low: Compressed sparse row stores only nonzeros as row pointers, column indices and values; SpMV streams them once, so it is memory-bandwidth bound.
›
Copy for AI
Similar systems
Share the most building blocks with this one.
compiler
20 %
shader-compiler
20 %