Module falcon::translator
[−]
[src]
Translators for various architectures to Falcon IL.
Translators in Falcon do not lift individual instructions, but instead lift basic blocks. This is both more performant than lifting individual instructions, and allows Falcon to deal with weird cases such as the delay slot in the MIPS architecture.
Translators lift individual instructions to ControlFlowGraph
, and combine
these graphs to form a single block. A single instruction may lift to not
only multiple Falcon IL instructions, but also multiple IL blocks.
Direct branches in Falcon IL are omitted in the IL, and instead edges with conditional guards are emitted. The Brc operation is only emitted for indirect branches, and instructions which are typically used to call other procedures.
If you are lifting directly from an Elf binary, you do not need to pay attention to the translators. The correct translator will be chosen automatically.
Modules
mips |
Capstone-based translator for MIPS. |
x86 |
Capstone-based translator for 32-bit x86. |
Structs
BlockTranslationResult |
The result of translating a block from a native architecture. |
Traits
TranslationMemory |
This trait is used by the translator to continually find and lift bytes from an underlying memory model. |
Translator |
A generic translation trait, implemented by various architectures. |