x86_init(3)
NAME
x86_init, x86_cleanup - initialize and cleanup libdisasm
SYNOPSIS
#include <libdis.h> typedef void (*DISASM_REPORTER)( enum x86_report_codes code, void * data, void * arg ); int x86_init( enum x86_options options, DISASM_REPORTER reporter, void * arg); int x86_cleanup(void);
DESCRIPTION
- enum x86_options {
- opt_none= 0,
opt_ignore_nulls=1, /* ignore sequences of > 4 NULL bytes */
opt_16_bit=2, /* 16-bit/DOS disassembly */
opt_unknown - };
- enum x86_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();
- }