SharpDisam is a disassembler written in C# able to decode the x86 and x86-64 instruction set architectures.
* a full C# port of the libudis86 C library
* a set of simple C# classes wrapping the udis86 API
* support for x86 16-bit, 32-bit and 64-bit instruction set architectures
* support for outputting in Intel and AT&T syntax
* support for all x86 and x86-64 (AMD64) General purpose and System instructions.
* support for the following ISA extensions:
- MMX, FPU (x87), AMD 3DNow
- SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AES,
- AMD-V, INTEL-VMX, SMX
* instructions are defined in an XML document that is consumed by a T4 template to generate opcode tables for performance.
* the XML instructions document is exactly the same as that found within the udis86 project. The generated C# opcode tables is also very similar except in syntax to those generated by the Python script in the libudis86 C-library.
* able to decode more than 4 million 64-bit instructions per second (with an average instruction size of 7-bytes)
1. Added support for offset into IAssemblyCode
2. Fix exceptions on invalid instructions (contributed by ste-art)
3. Fix ATT syntax for enter/bound mnemonics being dropped
4. Translator internals refactored (better code reuse)
5. A few Debug.Asserts replaced with exceptions for Translator and Instruction.ToString
1. Use of unsafe replaced with an assembly code reader interface
1. Full port of udis86 C-library into C#
2. Wrapper class Disassembler for those not familiar with the libudis86 C-library
This package has no dependencies.