Files
lifting-bits-remill/docs
Peter Goodman 592b6cbe8d Aarch64 support and other stuff (#113)
* This includes most of Alessandro's wonderful cmake changes, and starts into AArch64 support, though not using Capstone anymore.

* Trying to make travis work

* Minor additions, still not completely working on my ubuntu 14.04 vm or on travis

* Making progress on getting travis to build

* Some documentation improvements

* I push the travis button
2017-06-14 19:57:57 -04:00
..
2016-09-14 17:37:25 -04:00
2016-09-14 17:37:25 -04:00

Remill documentation

This document provides an index for topics relating to the design, implementation, and workings of Remill. Remill is an open-source, permissively licensed program. Persons interested in helping with the development of Remill should consult the "How to contribute" document.

Remill is a static binary translator. It consumes machine code instructions, and produces LLVM bitcode modules that accurately represents the semantics and operations performed by those instructions. These modules can be compiled back to machine code or analysed statically.

The operations, or semantics, of instructions are implemented using C++ functions. The "How to add and test an instruction"" document describes the formatting and structure of these C++ functions.

Remill does not consume binary programs directly. It depends on third-party tools like Binary Ninja or IDA Pro to disassemble binaries and produce "control-flow graph" (CFG) messages that tell Remill about basic blocks of machine code. The "How to represent and format machine code" document describes the structure and contents of the CFG file format.

Remill is designed with a narrow purpose: it only lifts machine code to LLVM bitcode.