mirror of https://github.com/icedland/iced.git
1.8 KiB
1.8 KiB
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
See below for some examples. All classes are in the Iced.Intel
namespace.
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
LGPL v3 or any later version (LGPL = GNU Lesser General Public License)