| OLD | NEW |
| (Empty) |
| 1 #include <stdio.h> | |
| 2 #include <stdlib.h> | |
| 3 #include <string.h> | |
| 4 | |
| 5 #include "libdis.h" | |
| 6 #include "ia32_insn.h" | |
| 7 #include "ia32_reg.h" /* for ia32_reg wrapper */ | |
| 8 #include "ia32_settings.h" | |
| 9 extern ia32_settings_t ia32_settings; | |
| 10 | |
| 11 #ifdef _MSC_VER | |
| 12 #define snprintf _snprintf | |
| 13 #define inline __inline | |
| 14 #endif | |
| 15 | |
| 16 | |
| 17 /* =========================================================== INIT/TERM */ | |
| 18 static DISASM_REPORTER __x86_reporter_func = NULL; | |
| 19 static void * __x86_reporter_arg = NULL; | |
| 20 | |
| 21 int x86_init( enum x86_options options, DISASM_REPORTER reporter, void * arg ) | |
| 22 { | |
| 23 ia32_settings.options = options; | |
| 24 __x86_reporter_func = reporter; | |
| 25 __x86_reporter_arg = arg; | |
| 26 | |
| 27 return 1; | |
| 28 } | |
| 29 | |
| 30 void x86_set_reporter( DISASM_REPORTER reporter, void * arg ) { | |
| 31 __x86_reporter_func = reporter; | |
| 32 __x86_reporter_arg = arg; | |
| 33 } | |
| 34 | |
| 35 void x86_set_options( enum x86_options options ){ | |
| 36 ia32_settings.options = options; | |
| 37 } | |
| 38 | |
| 39 enum x86_options x86_get_options( void ) { | |
| 40 return ia32_settings.options; | |
| 41 } | |
| 42 | |
| 43 int x86_cleanup( void ) | |
| 44 { | |
| 45 return 1; | |
| 46 } | |
| 47 | |
| 48 /* =========================================================== ERRORS */ | |
| 49 void x86_report_error( enum x86_report_codes code, void *data ) { | |
| 50 if ( __x86_reporter_func ) { | |
| 51 (*__x86_reporter_func)(code, data, __x86_reporter_arg); | |
| 52 } | |
| 53 } | |
| 54 | |
| 55 | |
| 56 /* =========================================================== MISC */ | |
| 57 unsigned int x86_endian(void) { return ia32_settings.endian; } | |
| 58 unsigned int x86_addr_size(void) { return ia32_settings.sz_addr; } | |
| 59 unsigned int x86_op_size(void) { return ia32_settings.sz_oper; } | |
| 60 unsigned int x86_word_size(void) { return ia32_settings.sz_word; } | |
| 61 unsigned int x86_max_insn_size(void) { return ia32_settings.max_insn; } | |
| 62 unsigned int x86_sp_reg(void) { return ia32_settings.id_sp_reg; } | |
| 63 unsigned int x86_fp_reg(void) { return ia32_settings.id_fp_reg; } | |
| 64 unsigned int x86_ip_reg(void) { return ia32_settings.id_ip_reg; } | |
| 65 unsigned int x86_flag_reg(void) { return ia32_settings.id_flag_reg; } | |
| 66 | |
| 67 /* wrapper function to hide the IA32 register fn */ | |
| 68 void x86_reg_from_id( unsigned int id, x86_reg_t * reg ) { | |
| 69 ia32_handle_register( reg, id ); | |
| 70 return; | |
| 71 } | |
| OLD | NEW |