turbodbg.h
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 273 行
H
273 行
/****************************************************************************
*
* Open Watcom Project
*
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
* ========================================================================
*
* This file contains Original Code and/or Modifications of Original
* Code as defined in and that are subject to the Sybase Open Watcom
* Public License version 1.0 (the 'License'). You may not use this file
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
* provided with the Original Code and Modifications, and is also
* available at www.sybase.com/developer/opensource.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
* NON-INFRINGEMENT. Please see the License for the specific language
* governing rights and limitations under the License.
*
* ========================================================================
*
* Description: WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
* DESCRIBE IT HERE!
*
****************************************************************************/
#ifndef TURBODBG_H
#define TURBODBG_H 1
#include <watcom.h>
#include "cansymb.h"
#include "objrec.h"
/*
In order to understand most of this file refer to the document named
"Turbo Object File Comment Records".
*/
enum turbo_coment_classes {
TD_CMT_IDENTIFICATION = 0x00,
TD_CMT_EXTDEF = 0xe0,
TD_CMT_PUBDEF = 0xe1,
TD_CMT_STRUCT_DEFN = 0xe2,
TD_CMT_TYPE_DEFN = 0xe3,
TD_CMT_ENUM_DEFN = 0xe4,
TD_CMT_BEGIN_SCOPE = 0xe5,
TD_CMT_LOCAL_DEFN = 0xe6,
TD_CMT_END_SCOPE = 0xe7,
TD_CMT_SELECT_SOURCE = 0xe8,
TD_CMT_DEPENDANCY_FILE = 0xe9,
TD_CMT_COMPILE_PARMS = 0xea,
TD_CMT_EXTDEF_MATCHED = 0xeb,
TD_CMT_PUBDEF_MATCHED = 0xec,
TD_CMT_BEGIN_SCOPE_LARGE= 0xf5,
TD_CMT_LOCAL_DEFN_LARGE = 0xf6,
TD_CMT_LARGE_END_SCOPE = 0xf7,
TD_CMT_ATTR = 0x80 /* attribute field for each COMENT rec */
};
enum turbo_compile_parms {
/* first byte */
TD_CP_LANG_UNSPECIFIED = 0,
TD_CP_LANG_C = 1,
TD_CP_LANG_PASCAL = 2,
TD_CP_LANG_BASIC = 3,
TD_CP_LANG_ASSEMBLY = 4,
/* second byte */
TD_CP_UNDERBARS_USED = 0x08,
TD_CP_MEMORY_SHIFT = 0,
TD_CP_MEMORY_FIELD = 0x07,
TD_CP_MEMORY_TINY = 0 << TD_CP_MEMORY_SHIFT,
TD_CP_MEMORY_SMALL = 1 << TD_CP_MEMORY_SHIFT,
TD_CP_MEMORY_MEDIUM = 2 << TD_CP_MEMORY_SHIFT,
TD_CP_MEMORY_COMPACT = 3 << TD_CP_MEMORY_SHIFT,
TD_CP_MEMORY_LARGE = 4 << TD_CP_MEMORY_SHIFT,
TD_CP_MEMORY_HUGE = 5 << TD_CP_MEMORY_SHIFT,
TD_CP_MEMORY_386_SMALL = 6 << TD_CP_MEMORY_SHIFT,
TD_CP_MEMORY_386_MEDIUM = 7 << TD_CP_MEMORY_SHIFT,
TD_CP_MEMORY_386_COMPACT= 8 << TD_CP_MEMORY_SHIFT,
TD_CP_MEMORY_386_LARGE = 9 << TD_CP_MEMORY_SHIFT
};
enum turbo_publics {
TD_PUB_VALID_BP = 0x08,
TD_PUB_RET_ADDR_SHIFT = 4,
TD_PUB_RET_ADDR_FIELD = 0xf0
};
enum turbo_struct_defn {
TD_STRUCT_BITS_SHIFT = 0,
TD_STRUCT_BITS_FIELD = 0x3f,
TD_STRUCT_NEW_OFFSET = 0x40,
TD_STRUCT_LAST_MEMBER = 0x80
};
enum turbo_predefined_types {
TD_TYPE_VOID = 0x01,
TD_TYPE_SIGNED_8 = 0x02,
TD_TYPE_SIGNED_16 = 0x04,
TD_TYPE_SIGNED_32 = 0x06,
TD_TYPE_UNSIGNED_8 = 0x08,
TD_TYPE_UNSIGNED_16 = 0x0a,
TD_TYPE_UNSIGNED_32 = 0x0c,
TD_TYPE_REAL_32 = 0x0e,
TD_TYPE_REAL_64 = 0x0f,
TD_TYPE_REAL_80 = 0x10,
TD_TYPE_REAL_48 = 0x11, /* pascal 6-byte real */
TD_TYPE_BOOLEAN = 0x12,
TD_TYPE_LAST_PREDEFN = 0x17
};
enum turbo_type_ids {
TD_ID_VOID = 0,
TD_ID_LSTR,
TD_ID_DSTR,
TD_ID_PSTR,
TD_ID_SCHAR,
TD_ID_SINT,
TD_ID_SLONG,
TD_ID_SQUAD,
TD_ID_UCHAR,
TD_ID_UINT,
TD_ID_ULONG,
TD_ID_UQUAD,
TD_ID_PCHAR,
TD_ID_FLOAT,
TD_ID_TPREAL,
TD_ID_DOUBLE,
TD_ID_LDOUBLE,
TD_ID_BCD4,
TD_ID_BCD8,
TD_ID_BCD10,
TD_ID_BCDCOB,
TD_ID_NEAR,
TD_ID_FAR,
TD_ID_SEG,
TD_ID_NEAR386,
TD_ID_FAR386,
TD_ID_CARRAY,
TD_ID_VLARRAY,
TD_ID_PARRAY,
TD_ID_ADESC,
TD_ID_STRUCT,
TD_ID_UNION,
TD_ID_VLSTRUCT,
TD_ID_VLUNION,
TD_ID_ENUM,
TD_ID_FUNCTION,
TD_ID_LABEL,
TD_ID_SET,
TD_ID_TFILE,
TD_ID_BFILE,
TD_ID_BOOL,
TD_ID_PENUM,
TD_ID_RPWORD,
TD_ID_RTBYTE,
TD_ID_POINTER_FLAG = 0x80 /* set to indicate a pointer type */
};
enum td_pointer_info {
TD_PTR_NEAR_NO_SEG = 0x00,
TD_PTR_NEAR_ES = 0x01,
TD_PTR_NEAR_CS = 0x02,
TD_PTR_NEAR_SS = 0x03,
TD_PTR_NEAR_DS = 0x04,
TD_PTR_NEAR_FS = 0x05,
TD_PTR_NEAR_GS = 0x06,
TD_PTR_FAR_NORMAL = 0x00,
TD_PTR_FAR_HUGE = 0x01
};
enum td_function_info {
TD_FCN_C_NEAR = 0x00,
TD_FCN_PASCAL_NEAR = 0x01,
TD_FCN_C_FAR = 0x04,
TD_FCN_PASCAL_FAR = 0x05,
TD_FCN_INTERRUPT = 0x07,
TD_FCN_VAR_ARGS_FLAG = 0x80
};
enum td_local_defn {
TD_LOCAL_STATIC = 0x00,
TD_LOCAL_ABSOLUTE = 0x01,
TD_LOCAL_AUTO = 0x02,
TD_LOCAL_PASVAR = 0x03,
TD_LOCAL_REGISTER = 0x04,
TD_LOCAL_TYPEDEF = 0x06,
TD_LOCAL_TAG = 0x07,
TD_LOCAL_PARM_FLAG = 0x08 /* OR this in to indicate it's a parm*/
};
enum td_register_ids {
TD_REG_AX = 0x00,
TD_REG_CX,
TD_REG_DX,
TD_REG_BX,
TD_REG_SP,
TD_REG_BP,
TD_REG_SI,
TD_REG_DI,
TD_REG_AL,
TD_REG_CL,
TD_REG_DL,
TD_REG_BL,
TD_REG_AH,
TD_REG_CH,
TD_REG_DH,
TD_REG_BH,
TD_REG_ES,
TD_REG_CS,
TD_REG_SS,
TD_REG_DS,
TD_REG_FS,
TD_REG_GS,
TD_REG_EAX = 0x18,
TD_REG_ECX,
TD_REG_EDX,
TD_REG_EBX,
TD_REG_ESP,
TD_REG_EBP,
TD_REG_ESI,
TD_REG_EDI,
/* the following are extensions Borland added for Watcom compatibility */
TD_REG_ST0 = 0x20,
TD_REG_ST1,
TD_REG_ST2,
TD_REG_ST3,
TD_REG_ST4,
TD_REG_ST5,
TD_REG_ST6,
TD_REG_ST7,
TD_REG_MULTI = 0x40,
TD_REG_MULTI_LO_SHIFT = 0,
TD_REG_MULTI_HI_SHIFT = 3,
TD_REG_MULTI_AX = 0,
TD_REG_MULTI_CX,
TD_REG_MULTI_DX,
TD_REG_MULTI_BX,
TD_REG_MULTI_SI,
TD_REG_MULTI_DI,
TD_REG_MULTI_ES,
TD_REG_MULTI_DS,
TD_REG_MULTI_AXBXCXDX = TD_REG_MULTI /* AX:AX pair */
};
extern void Can2TDInit( void );
extern void Can2TDFini( void );
/*
These are internal routines for can2td?.c only!
*/
extern void Can2TDT( void );
extern void Can2TDS( void );
extern void Can2TDStatic( void );
extern void Can2TDTypeDef( void );
extern obj_rec *Can2TDNewRec( uint_8 cmt_class, uint_16 size );
extern void Can2TDEndRec( obj_rec *coment );
extern uint_8 Can2TDBPOffset( symb_handle symb );
#define TD_HAS_A_PUBDEF (0x80000000UL)
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?