Compilers

Reference:

Reading list:

  • Build A Simple Interpreter

  • Books:

    • “Optimizinig Compilers for Modern Architectures: A Dependence-based Approach”. By Randy Allen, and Ken Kennedy. 2001.
    • “Compilers: Principles, Techniques, and Tools”. By Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. 2nd ed. 2007.
    • “Advanced Compiler Design and Implementation”. By Steven S. Muchnick. 1997.
    • “Engineering A Compiler”. By Keith D. Cooper, and Linda Torczon. 2nd ed. 2012.
  • Basics
  • Reference 1 DAG - Directed Acyclic Graph Directed Acyclic Graph (DAG) is a tool that depicts the structure of basic blocks, helps to see the flow of values flowing among the basic blocks, and offers optimizatino too. 1 A directed acyclic graph (DAG) for a basic block: Leaf nodes represent identifiers, names or constants. Interior nodes are labeled by an operator symbol. Nodes are also given a sequence of identifiers for labels to store the computed value.

  • Verify
  • Reference: Fully Abstract Compilation. a little bit Sec Gap Reference 1 The correctness-security gap in compiler optimization. By Vija D’Silva, Mathias Payer, Dawn Song. LangSec, 2015. ↩ Next700 Reference 1 The Next 700 Compiler Correctness Theorems (Functional Pearl). By Daniel Patterson, Amal Ahmed. ICFP, 2019. ↩ CompCert Reference 1 CompCert: A realistic, verified compiler. By verified, we mean a compiler that is accompanied by a machine-checked proof of a semantic preservation property: the generated machine code behaves as prescribed by the semantics of the source program.

  • Learning LLVM
  • Q & A What is the LLVM address space? John: better name ‘namespace’: one namespace for memory load/store; another namespace for IO port load/store. What is data layout string in LLVM? What kind of change we need to make to enable fat pointers for a legacy code? Exceptions References: reference More Landingpad References: LLVM Exception Handling A landing pad corresponds roughly to the code found in the catch portion of a try/catch sequence.

  • Auto Parallel
  • Reference 1 HELIX: auto parallel loops. Janus: Automatic binary parallelisation. reference ↩

Created Aug 4, 2019 // Last Updated Jul 8, 2021

If you could revise
the fundmental principles of
computer system design
to improve security...

... what would you change?