These are bindings to the Binary Ninja arm64 architecture/disassembler plugin.
Note that while Binary Ninja is an (excellent) commercial product, the disassembler is entirely Apache 2 licensed and may be used without a license. To install, just add bad64 as a normal dependency in Cargo.toml.
For more information on how this disassembler was created, see this blogpost by Andrew Lamoureux.
For docs and usage, please see docs.rs and the examples.
$ cargo run --example decode 0x91010420
Instruction {
address: 0x1000,
opcode: 0x91010420,
op: ADD,
num_operands: 0x3,
operands: [
Reg {
reg: X0,
arrspec: None,
},
Reg {
reg: X1,
arrspec: None,
},
Imm64 {
imm: Unsigned(
0x41,
),
shift: None,
},
],
flags_set: None,
}
add x0, x1, #0x41