Function capstone_sys::cs_disasm [−][src]
pub unsafe extern "C" fn cs_disasm(
handle: csh,
code: *const u8,
code_size: usize,
address: u64,
count: usize,
insn: *mut *mut cs_insn
) -> usize
Expand description
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. Resulting 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.