Function capstone_sys::cs_disasm [] [src]

pub unsafe extern "C" fn cs_disasm(
    handle: csh,
    code: *const uint8_t,
    code_size: size_t,
    address: uint64_t,
    count: size_t,
    insn: *mut *mut cs_insn
) -> size_t

Disassemble binary code, given the code buffer, size, address and number of instructions to be decoded. This API dynamically allocate memory to contain disassembled instruction. Resulted instructions will be put into *insn

NOTE 1: this API will automatically determine memory needed to contain output disassembled instructions in insn.

NOTE 2: caller must free the allocated memory itself to avoid memory leaking.

NOTE 3: for system with scarce memory to be dynamically allocated such as OS kernel or firmware, the API cs_disasm_iter() might be a better choice than cs_disasm(). The reason is that with cs_disasm(), based on limited available memory, we have to calculate in advance how many instructions to be disassembled, which complicates things. This is especially troublesome for the case count=0, when cs_disasm() runs uncontrollably (until either end of input buffer, or when it encounters an invalid instruction).

handle: handle returned by cs_open()

code: buffer containing raw binary code to be disassembled.

code_size: size of the above code buffer.

address: address of the first instruction in given raw code buffer.

insn: array of instructions filled in by this API. NOTE: insn will be allocated by this function, and should be freed with cs_free() API.

count: number of instructions to be disassembled, or 0 to get all of them

return: the number of successfully disassembled instructions, or 0 if this function failed to disassemble the given code

On failure, call cs_errno() for error code.