iced is a blazing fast x86 and x64 instruction decoder, disassembler, and assembler for Rust, .NET, Java, Python, Lua, and JavaScript.
The tool solves the problem of accurately translating between machine code and human-readable assembly language across multiple platforms. It decodes x86 instructions (16, 32, and 64-bit) into structured representations and can reassemble them, supporting all Intel and AMD instructions. The decoder operates without memory allocation and produces compact 40-byte instruction objects. Multiple output formatters are available, including masm, nasm, gas (AT&T), and Intel (XED) syntax, with extensive customization options. Beyond basic decoding and encoding, the tool provides an API to query instruction metadata such as read and written registers, memory operands, rflags bits, CPUID feature flags, and control flow information.
The tool suits projects that need to analyze, instrument, or generate x86 code programmatically. Its multi-language support makes it accessible whether you work in Rust, .NET, Java, Python, or JavaScript environments. The performance characteristics—decoding over 250 MB/s and combined decode-plus-format operations exceeding 130 MB/s in Rust—make it suitable for bulk binary analysis tasks. Projects requiring correctness guarantees will benefit from the extensive testing against other disassemblers and assemblers, as well as fuzzing validation.
The project maintains active development with continuous integration testing and code coverage tracking. Releases are published across multiple package managers including crates.io, NuGet, Maven Central, and PyPI, indicating sustained support for all language bindings. The codebase is comprehensively tested, with validation against established tools like xed, gas, objdump, masm, dumpbin, nasm, and ndisasm to ensure instruction correctness.