Are there any ARM (or other non-x86) disassemblers that decompose an instruction into its component parts in a machine-friendly structure? Ideally it would be something like XED or distorm3, which disassemble into a structure and then provide an API for querying things like Is this a call? Is this a conditional branch? etc., or getting the operands of an instruction.I found armstorm, but it currently only supports THUMB.Edit: To clarify, I'm looking for something that can be called from within another program and hopefully has liberal licensing (GPL-compatible).
Are there any ARM disassemblers that provide structured output?
tools;disassembly;arm
DARM (GitHub) by Jurriaan Bremer is an ARMv7 disassembler written in C and is available under a 3-Clause BSD License.Note: It currently does not support Thumb mode.A simple example of using DARM could be as follows:// The structure which will hold all the metadata about the disassembled instruction...darm_t d;// disassemble a 32bit opcode...if( darm_armv7_disasm( &d, 0xE12FFF14 ) >= 0 ){    if( d.instr == I_BX )    {        // do something with a BX instructiuon...    }    // print the disassembled full instruction     darm_str_t str;    if( darm_str( &d, &str) > 0 )        printf( %s\n, str.instr );}