IR Transformation Synthesis for Assembly Instructions
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
benches
src
.gitignore
.travis.yml
Cargo.toml
LICENSE
README.md

README.md

Synthir

Build Status

This tool uses templates, MCMC and a mixed approach to synthetize IR transformations for assembly instructions (currently only supporting x86_64).

Slides from Ekoparty: IR transformation synthesis for assembly instructions

Installation

Runs with Rust >= 1.7 and requires the following libraries:

  • libz-dev
  • libedit-dev
  • libcapstone-dev
  • llvm-3.8-dev (or 3.7)

More information

  • Automated Synthesis of Symbolic Instruction Encodings from I/O Samples: Paper
  • Stochastic Superoptimization: Paper

TODO

  • x86_64 support
  • ARM support (synthir_execute)
  • Mips support (synthir_execute)
  • Finish Floating point support (SMT and emulator)
  • Add back mixed approach
  • Extend available templates
  • Transform our IR to LLVM (synthir_llvm)
  • Clean