iced/Iced/README.md

65 lines
1.8 KiB
Markdown
Raw Normal View History

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)