madimp.h

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 328 行 · 第 1/2 页

H
328
字号
mad_type_handle DIGENTRY MITypeDefault( mad_type_kind, mad_address_format, const mad_registers *, const address * );

mad_status      DIGENTRY MITypeConvert( const mad_type_info *in_t, const void *in_d, const mad_type_info *out_t, void *out_d, addr_seg );
mad_status      DIGENTRY MITypeToString( unsigned radix, const mad_type_info *, const void *, unsigned *max, char *buff );


/*
 *      Machine Registers
 */

unsigned        DIGENTRY MIRegistersSize( void );
mad_status      DIGENTRY MIRegistersHost( mad_registers * );
mad_status      DIGENTRY MIRegistersTarget( mad_registers * );

walk_result     DIGENTRY MIRegSetWalk( mad_type_kind, MI_REG_SET_WALKER *, void * );

mad_string      DIGENTRY MIRegSetName( const mad_reg_set_data * );
unsigned        DIGENTRY MIRegSetLevel( const mad_reg_set_data *, unsigned max, char *buff );

unsigned        DIGENTRY MIRegSetDisplayGrouping( const mad_reg_set_data * );
mad_status      DIGENTRY MIRegSetDisplayGetPiece( const mad_reg_set_data *, const mad_registers *, unsigned piece, char **descript, unsigned *max_descript, const mad_reg_info **reg, mad_type_handle *disp_type, unsigned *max_value );
mad_status      DIGENTRY MIRegSetDisplayModify( const mad_reg_set_data *, const mad_reg_info *reg, const mad_modify_list **possible, unsigned *num_possible );
const mad_toggle_strings *DIGENTRY MIRegSetDisplayToggleList( const mad_reg_set_data * );
unsigned        DIGENTRY MIRegSetDisplayToggle( const mad_reg_set_data *, unsigned on, unsigned off );
mad_status      DIGENTRY MIRegModified( const mad_reg_set_data *rsd, const mad_reg_info *ri, const mad_registers *old, const mad_registers *curr );
mad_status      DIGENTRY MIRegInspectAddr( const mad_reg_info *, const mad_registers *, address * );

walk_result     DIGENTRY MIRegWalk( const mad_reg_set_data *, const mad_reg_info *, MI_REG_WALKER *, void * );

void            DIGENTRY MIRegSpecialGet( mad_special_reg, const mad_registers *block, addr_ptr * );
void            DIGENTRY MIRegSpecialSet( mad_special_reg, mad_registers *block, const addr_ptr * );
unsigned        DIGENTRY MIRegSpecialName( mad_special_reg, const mad_registers *block, mad_address_format, unsigned max, char *buff );

const mad_reg_info *DIGENTRY MIRegFromContextItem( context_item );

void            DIGENTRY MIRegUpdateStart( mad_registers *, unsigned flags, unsigned bit_start, unsigned bit_size );
void            DIGENTRY MIRegUpdateEnd( mad_registers *, unsigned flags, unsigned bit_start, unsigned bit_size );



/*
 *      Calling Conventions
 */

mad_status              DIGENTRY MICallStackGrowsUp( void );
const mad_string        *DIGENTRY MICallTypeList( void );
mad_status              DIGENTRY MICallBuildFrame( mad_string, address ret, address rtn, const mad_registers *in, mad_registers *out );
const mad_reg_info      *DIGENTRY MICallReturnReg( mad_string, address );
const mad_reg_info      **DIGENTRY MICallParmRegList( mad_string, address );

unsigned                DIGENTRY MICallUpStackSize( void );
mad_status              DIGENTRY MICallUpStackInit( mad_call_up_data *, const mad_registers * );
mad_status              DIGENTRY MICallUpStackLevel( mad_call_up_data *, const address *start, unsigned rtn_characteristics, long return_disp, const mad_registers *in, address *execution, address *frame, address *stack, mad_registers **out );


/*
 *      Instruction Disassembly
 */

unsigned                DIGENTRY MIDisasmDataSize( void );
unsigned                DIGENTRY MIDisasmNameMax( void );
mad_status              DIGENTRY MIDisasm( mad_disasm_data *, address *, int );
unsigned                DIGENTRY MIDisasmFormat( mad_disasm_data *, mad_disasm_piece, unsigned radix, unsigned max, char *buff );
unsigned                DIGENTRY MIDisasmInsSize( mad_disasm_data * );
mad_status              DIGENTRY MIDisasmInsUndoable( mad_disasm_data * );
mad_disasm_control      DIGENTRY MIDisasmControl( mad_disasm_data *, const mad_registers * );
mad_status              DIGENTRY MIDisasmInspectAddr( char *start, unsigned len, unsigned radix, const mad_registers *, address * );
mad_status              DIGENTRY MIDisasmInsNext( mad_disasm_data *, const mad_registers *, address * );

walk_result             DIGENTRY MIDisasmMemRefWalk( mad_disasm_data *, MI_MEMREF_WALKER *, const mad_registers *, void * );

const mad_toggle_strings        *DIGENTRY MIDisasmToggleList( void );
unsigned                DIGENTRY MIDisasmToggle( unsigned on, unsigned off );


/*
 *      Instruction Tracing
 */

unsigned                DIGENTRY MITraceSize( void );
void                    DIGENTRY MITraceInit( mad_trace_data *, const mad_registers * );
mad_trace_how           DIGENTRY MITraceOne( mad_trace_data *, mad_disasm_data *, mad_trace_kind, const mad_registers *, address * );
mad_status              DIGENTRY MITraceHaveRecursed( address, const mad_registers * );
mad_status              DIGENTRY MITraceSimulate( mad_trace_data *, mad_disasm_data *, const mad_registers *in, mad_registers *out );
void                    DIGENTRY MITraceFini( mad_trace_data * );

mad_status              DIGENTRY MIUnexpectedBreak( mad_registers *, unsigned *max, char *buff );


typedef struct mad_client_routines {
    unsigned_8          major;
    unsigned_8          minor;
    unsigned_16         sizeof_struct;

    void                *(DIGCLIENT *MADCliAlloc)( unsigned );
    void                *(DIGCLIENT *MADCliRealloc)( void *, unsigned );
    void                (DIGCLIENT *MADCliFree)( void * );

    dig_fhandle         (DIGCLIENT *MADCliOpen)( char const*, dig_open );
    unsigned long       (DIGCLIENT *MADCliSeek)( dig_fhandle, unsigned long, dig_seek );
    unsigned            (DIGCLIENT *MADCliRead)( dig_fhandle, void *, unsigned );
    void                (DIGCLIENT *MADCliClose)( dig_fhandle );

    unsigned            (DIGCLIENT *MADCliReadMem)( address, unsigned size, void *buff );
    unsigned            (DIGCLIENT *MADCliWriteMem)( address, unsigned size, void const *buff );

    unsigned            (DIGCLIENT *MADCliString)( mad_string, unsigned max, char *buff );
    mad_status          (DIGCLIENT *MADCliAddString)( mad_string, const char * );
    unsigned            (DIGCLIENT *MADCliRadixPrefix)( unsigned radix, unsigned max, char *buff );

    void                (DIGCLIENT *MADCliNotify)( mad_notify_type, void const * );

    unsigned            (DIGCLIENT *MADCliMachineData)( address, unsigned, unsigned, void const*, unsigned, void * );

    mad_status          (DIGCLIENT *MADCliAddrToString)( address, mad_type_handle, mad_label_kind, unsigned max, char *buff );
    mad_status          (DIGCLIENT *MADCliMemExpr)( char const *start, unsigned len, unsigned radix, address * );

    void                (DIGCLIENT *MADCliAddrSection)( address * );
    mad_status          (DIGCLIENT *MADCliAddrOvlReturn)( address * );

    system_config       *(DIGCLIENT *MADCliSystemConfig)( void );

    mad_status          (DIGCLIENT *MADCliTypeInfoForHost)( mad_type_kind, int size, mad_type_info * );
    mad_status          (DIGCLIENT *MADCliTypeConvert)( const mad_type_info *in_t, const void *in_d, const mad_type_info *out_t, void *out_d, addr_seg );
    mad_status          (DIGCLIENT *MADCliTypeToString)( unsigned radix, const mad_type_info *, const void *data, unsigned *max, char *buff );
} mad_client_routines;


void            *MCAlloc( unsigned amount );
void            *MCRealloc( void *p, unsigned amount );
void            MCFree( void *p );

dig_fhandle     MCOpen( char *, dig_open );
unsigned long   MCSeek( dig_fhandle, unsigned long, dig_seek );
unsigned        MCRead( dig_fhandle, void *, unsigned );
void            MCClose( dig_fhandle );

unsigned        MCReadMem( address, unsigned size, void *buff );
unsigned        MCWriteMem( address, unsigned size, void *buff );

unsigned        MCString( mad_string, unsigned max, char *buff );
mad_status      MCAddString( mad_string, const char * );
unsigned        MCRadixPrefix( unsigned radix, unsigned max, char *buff );

void            MCNotify( mad_notify_type, void * );

unsigned        MCMachineData( address, unsigned, unsigned, void *, unsigned, void * );

mad_status      MCAddrToString( address, mad_type_handle, mad_label_kind, unsigned max, char *buff );
mad_status      MCMemExpr( char *start, unsigned len, unsigned radix, address * );

void            MCAddrSection( address * );
mad_status      MCAddrOvlReturn( address * );

system_config   *MCSystemConfig( void );

mad_status      MCTypeInfoForHost( mad_type_kind, int size, mad_type_info * );
mad_status      MCTypeConvert( const mad_type_info *in_t, const void *in_d, const mad_type_info *out_t, void *out_d, addr_seg );
mad_status      MCTypeToString( unsigned radix, const mad_type_info *, const void *data, unsigned *max, char *buff );

void            MCStatus( mad_status );
#include "digunpck.h"
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?