2018-09-05 23:29:23 +00:00
|
|
|
|
|
|
|
|
|
High performance x86 (16/32/64-bit) instruction decoder, encoder and formatter.
|
|
|
|
|
It can be used for static analysis of x86/x64 binaries, to rewrite code (eg. remove garbage instructions), to relocate code or as a disassembler.
|
|
|
|
|
|
|
|
|
|
- Supports all Intel and AMD instructions
|
|
|
|
|
- The decoder doesn't allocate any memory and is 2x-5x+ faster than other similar libraries written in C or C#
|
|
|
|
|
- Small decoded instructions, only 32 bytes (compared to other libraries that have up to 1KB-sized decoded instructions)
|
|
|
|
|
- The formatter supports masm, nasm, gas (AT&T) and Intel (xed) and there are many options to customize the output
|
|
|
|
|
- The encoder can be used to re-encode decoded instructions at any address
|
|
|
|
|
- The block encoder encodes a list of instructions and optimizes branches to short, near or 'long' (64-bit: 1 or more instructions)
|
|
|
|
|
- API to get instruction info, eg. read/written registers, memory and rflags bits; CPUID feature flag, flow control info, etc
|
|
|
|
|
- All instructions are tested (decode, encode, format, instruction info)
|
|
|
|
|
|
|
|
|
|
= Classes
|
|
|
|
|
|
2018-09-06 18:56:16 +00:00
|
|
|
|
See below for some examples. All classes are in the `Iced.Intel` namespace.
|
2018-09-05 23:29:23 +00:00
|
|
|
|
|
|
|
|
|
Decoder:
|
|
|
|
|
|
|
|
|
|
- `Decoder`
|
|
|
|
|
- `Instruction`
|
|
|
|
|
- `CodeReader`
|
|
|
|
|
- `ByteArrayCodeReader`
|
|
|
|
|
- `ConstantOffsets`
|
|
|
|
|
|
|
|
|
|
Formatters:
|
|
|
|
|
|
|
|
|
|
- `Formatter`
|
|
|
|
|
- `MasmFormatter`
|
|
|
|
|
- `NasmFormatter`
|
|
|
|
|
- `GasFormatter`
|
|
|
|
|
- `IntelFormatter`
|
|
|
|
|
- `FormatterOptions`
|
|
|
|
|
- `MasmFormatterOptions`
|
|
|
|
|
- `NasmFormatterOptions`
|
|
|
|
|
- `GasFormatterOptions`
|
|
|
|
|
- `IntelFormatterOptions`
|
|
|
|
|
- `FormatterOutput`
|
|
|
|
|
- `StringBuilderFormatterOutput`
|
|
|
|
|
- `SymbolResolver`
|
|
|
|
|
|
|
|
|
|
Encoder:
|
|
|
|
|
|
|
|
|
|
- `Encoder`
|
|
|
|
|
- `BlockEncoder`
|
|
|
|
|
- `CodeWriter`
|
|
|
|
|
- `ConstantOffsets`
|
|
|
|
|
|
|
|
|
|
Instruction info:
|
|
|
|
|
|
|
|
|
|
- `Instruction.GetInfo()`
|
|
|
|
|
- `InstructionInfo`
|
|
|
|
|
- `InstructionInfoFactory`
|
|
|
|
|
- `InstructionInfoExtensions`
|
|
|
|
|
- `MemorySizeExtensions`
|
|
|
|
|
- `RegisterExtensions`
|
|
|
|
|
|
|
|
|
|
= Examples
|
|
|
|
|
|
|
|
|
|
TODO:
|
|
|
|
|
|
|
|
|
|
= License
|
|
|
|
|
|
2018-09-06 18:56:16 +00:00
|
|
|
|
LGPL v3 or any later version (LGPL = GNU Lesser General Public License)
|