x86_init(3)

x86_init3

Initialize and cleanup libdisasm

Usage

#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);

Overview

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();
}

Releases

Unchanged in 9 releases since Debian 5.0 (Lenny).

  1. 5.0–13

From libdisasm-dev 0.23-7 in Debian 13 (Trixie). Parsed by carta from the page's man source.