* Update README.md fix missing link * Update LIFE_OF_AN_INSTRUCTION.md There are difference address between picture and example code. maybe it is just a little mistake * Update DESIGN.md between A and B from C... maybe it is wrong grammar. but English is not my first language. downstream tools can distinguish between LLVM `load` and `store` instructions from accesses to the modeled program's memory. => downstream tools can distinguish LLVM `load` and `store` instructions from accesses to the modeled program's memory. it seems more nature. (i think.)
1.2 KiB
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 machine code to LLVM bitcode binary translation library. It provides APIs that enable other tools (e.g. McSema) to lift the instructions of binary programs into equivalent LLVM bitcode. Remill can and has been used by both static and dynamic binary translators.
Remill's approach to instruction lifting is showcased in the "How instructions are lifted" document. It shows how machine code bytes are decoded and mapped to C++ functions that implement the operational semantics of instructions. The "How to add and test an instruction" document describes the formatting and structure of these C++ functions.