Crate disassemble [] [src]

Disassemble

This crate provides basic functionality for working with disassembled code. It provides (or will provide) functionality for performing:

The actual disassembly with the implementation of Instruction and other elements of the system will be provided by other crates that integrate with other systems, such as the Capstone Engine. This crate is written such that it should work with nearly any machine code, VM bytecode or JIT compiler output, given an appropriate implementation of Instruction.

It is possible (likely?) that some functionality from within this crate may move in the future to a separate crate for broader re-use. This might impact Symbol among other things.

Installation

This crate works with Cargo and is on crates.io. Add it to your Cargo.toml like so:

[dependencies]
disassemble = "0.0.1"

Then, let rustc know that you're going to use this crate at the top of your own crate:

extern crate disassemble;

Future Directions

In the future, we want to extend this library to support a number of additional features:

Contributions

Contributions are welcome.

Structs

Address

The location of something in an address space.

BasicBlock

A basic block is a sequence of instructions with no inward-bound branches except to the entry point and no outward-bound branches except at the exit.

BasicBlockEdge

Information about an edge between 2 basic blocks.

ControlFlowGraph

A control flow graph.

Function

A function within a program.

Symbol

A symbol within an executable or library. This is a named address.

Enums

EdgeType

When is this edge taken? Conditionally or unconditionally?

Traits

Instruction

An assembly instruction, bytecode operation, VM operation, etc.