x86_init, x86_cleanup - initialize and cleanup libdisasm
Contents
Description
enumx86_options{
opt_none= 0,
opt_ignore_nulls=1, /* ignore sequences of > 4 NULL bytes */
opt_16_bit=2, /* 16-bit/DOS disassembly */
opt_unknown
};enumx86_report_codes{
report_disasm_bounds,
report_insn_bounds,
report_invalid_insn,
report_unknown
};Examples
The following provides a skeleton for initializing and terminating
libdisasm:
void reporter( enum x86_report_codes code, void *data, void *arg ) {
char * str = NULL;
FILE *stream = (FILE *) arg;
if (! stream ) stream = stderr;
/* here would could examine the error and do something useful;
* instead we just print that an error occurred */
switch ( code ) {
case report_disasm_bounds:
str = "Attempt to disassemble RVA "
"beyond end of buffer";
break;
case report_insn_bounds:
str = "Instruction at RVA extends "
"beyond buffer";
break;
case report_invalid_insn:
str = "Invalid opcode at RVA";
break;
case report_unknown:
str = "Unknown Error";
break;
}
fprintf(stream, "ERROR ´%s:´ %p0, str, data);
}
int main( int argc, char **argv ) {
x86_init(opt_none, reporter, stderr);
/* disassembler code goes here */
x86_cleanup();
}
Name
x86_init, x86_cleanup - initialize and cleanup libdisasm
See Also
libdisasm(7), x86_disasm(3), x86_format_insn(3), x86dis(1) mammon_ 0.21 x86_init(3)
Synopsis
#include<libdis.h>typedefvoid(*DISASM_REPORTER)(enumx86_report_codes code,void* data,void* arg );intx86_init(enumx86_options options,DISASM_REPORTER reporter,void* arg);intx86_cleanup(void);
