Opdis is a wrapper for the libopcodes disassembler library distributed as part of GNU binutils. It extends the libopcodes library by offering linear and control-flow disassembly algorithms, instruction and operand objects that are suitable for analysis, and a command-line utility to perform disassembly on arbitrary locations in a file.

These features are lacking in libopcodes and objdump. The design of libopcodes makes it awkward to use for binary analysis; it assumes that disassembled instructions are going to be printed, not stored or analyzed, and therefore it invokes a callback with an fprintf(3) signature. The shortcomings of objdump are even greater: it does not support control-flow disassembly, nor does it allow the user to specify which bytes in the file to disassemble.

The Opdis project consists of the libopdis library and the opdis command-line utility.

Supported Architectures

Opdis supports the disassembly of all architectures that GNU binutils supports. On most of these architectures, however, only the ASCII string for the disassembled instruction is available.

Complete instruction and operand objects are generated only for the following platforms:


Both opdis and libopdis are covered by the GNU Public License, version 3.


Sample Disassembly