⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coff.h

📁 Tiny C&C++,看看吧,也许用的着
💻 H
📖 第 1 页 / 共 2 页
字号:
        union        {                long    l_symndx ;      /* sym. table index of function name                                                iff l_lnno == 0      */                long    l_paddr ;       /* (physical) address of line number */        }               l_addr ;        unsigned short  l_lnno ;        /* line number */};#define LINENO  struct lineno#define LINESZ  6       /* sizeof(LINENO) *//*------------------------------------------------------------------------*//*   STORAGE CLASSES                                                      *//*------------------------------------------------------------------------*/#define  C_EFCN          -1    /* physical end of function */#define  C_NULL          0#define  C_AUTO          1     /* automatic variable */#define  C_EXT           2     /* external symbol */#define  C_STAT          3     /* static */#define  C_REG           4     /* register variable */#define  C_EXTDEF        5     /* external definition */#define  C_LABEL         6     /* label */#define  C_ULABEL        7     /* undefined label */#define  C_MOS           8     /* member of structure */#define  C_ARG           9     /* function argument */#define  C_STRTAG        10    /* structure tag */#define  C_MOU           11    /* member of union */#define  C_UNTAG         12    /* union tag */#define  C_TPDEF         13    /* type definition */#define C_USTATIC        14    /* undefined static */#define  C_ENTAG         15    /* enumeration tag */#define  C_MOE           16    /* member of enumeration */#define  C_REGPARM       17    /* register parameter */#define  C_FIELD         18    /* bit field */#define  C_BLOCK         100   /* ".bb" or ".eb" */#define  C_FCN           101   /* ".bf" or ".ef" */#define  C_EOS           102   /* end of structure */#define  C_FILE          103   /* file name */#define  C_LINE          104   /* dummy sclass for line number entry */#define  C_ALIAS         105   /* duplicate tag */#define  C_HIDDEN        106   /* special storage class for external */                               /* symbols in dmert public libraries  *//*------------------------------------------------------------------------*//*  SYMBOL TABLE ENTRIES                                                  *//*------------------------------------------------------------------------*/#define  SYMNMLEN   8      /*  Number of characters in a symbol name */#define  FILNMLEN   14     /*  Number of characters in a file name */#define  DIMNUM     4      /*  Number of array dimensions in auxiliary entry */struct syment{        union        {                char            _n_name[SYMNMLEN];      /* old COFF version */                struct                {                        long    _n_zeroes;      /* new == 0 */                        long    _n_offset;      /* offset into string table */                } _n_n;                char            *_n_nptr[2];    /* allows for overlaying */        } _n;        long                    n_value;        /* value of symbol */        short                   n_scnum;        /* section number */        unsigned short          n_type;         /* type and derived type */        char                    n_sclass;       /* storage class */        char                    n_numaux;       /* number of aux. entries */};#define n_name          _n._n_name#define n_nptr          _n._n_nptr[1]#define n_zeroes        _n._n_n._n_zeroes#define n_offset        _n._n_n._n_offset/*------------------------------------------------------------------------*//* Relocatable symbols have a section number of the                       *//* section in which they are defined.  Otherwise, section                 *//* numbers have the following meanings:                                   *//*------------------------------------------------------------------------*/#define  N_UNDEF  0                     /* undefined symbol */#define  N_ABS    -1                    /* value of symbol is absolute */#define  N_DEBUG  -2                    /* special debugging symbol  */#define  N_TV     (unsigned short)-3    /* needs transfer vector (preload) */#define  P_TV     (unsigned short)-4    /* needs transfer vector (postload) *//*------------------------------------------------------------------------*//* The fundamental type of a symbol packed into the low                   *//* 4 bits of the word.                                                    *//*------------------------------------------------------------------------*/#define  _EF    ".ef"#define  T_NULL     0          /* no type info */#define  T_ARG      1          /* function argument (only used by compiler) */#define  T_CHAR     2          /* character */#define  T_SHORT    3          /* short integer */#define  T_INT      4          /* integer */#define  T_LONG     5          /* long integer */#define  T_FLOAT    6          /* floating point */#define  T_DOUBLE   7          /* double word */#define  T_STRUCT   8          /* structure  */#define  T_UNION    9          /* union  */#define  T_ENUM     10         /* enumeration  */#define  T_MOE      11         /* member of enumeration */#define  T_UCHAR    12         /* unsigned character */#define  T_USHORT   13         /* unsigned short */#define  T_UINT     14         /* unsigned integer */#define  T_ULONG    15         /* unsigned long *//*------------------------------------------------------------------------*//* derived types are:                                                     *//*------------------------------------------------------------------------*/#define  DT_NON      0          /* no derived type */#define  DT_PTR      1          /* pointer */#define  DT_FCN      2          /* function */#define  DT_ARY      3          /* array */#define MKTYPE(basic, d1,d2,d3,d4,d5,d6) \       ((basic) | ((d1) <<  4) | ((d2) <<  6) | ((d3) <<  8) |\                  ((d4) << 10) | ((d5) << 12) | ((d6) << 14))/*------------------------------------------------------------------------*//* type packing constants and macros                                      *//*------------------------------------------------------------------------*/#define  N_BTMASK_COFF     017#define  N_TMASK_COFF      060#define  N_TMASK1_COFF     0300#define  N_TMASK2_COFF     0360#define  N_BTSHFT_COFF     4#define  N_TSHIFT_COFF     2#define  BTYPE_COFF(x)  ((x) & N_BTMASK_COFF)  #define  ISINT(x)  (((x) >= T_CHAR && (x) <= T_LONG) ||   \		    ((x) >= T_UCHAR && (x) <= T_ULONG) || (x) == T_ENUM)#define  ISFLT_COFF(x)  ((x) == T_DOUBLE || (x) == T_FLOAT)#define  ISPTR_COFF(x)  (((x) & N_TMASK_COFF) == (DT_PTR << N_BTSHFT_COFF)) #define  ISFCN_COFF(x)  (((x) & N_TMASK_COFF) == (DT_FCN << N_BTSHFT_COFF))#define  ISARY_COFF(x)  (((x) & N_TMASK_COFF) == (DT_ARY << N_BTSHFT_COFF))#define  ISTAG_COFF(x)  ((x)==C_STRTAG || (x)==C_UNTAG || (x)==C_ENTAG)#define  INCREF_COFF(x) ((((x)&~N_BTMASK_COFF)<<N_TSHIFT_COFF)|(DT_PTR<<N_BTSHFT_COFF)|(x&N_BTMASK_COFF))#define  DECREF_COFF(x) ((((x)>>N_TSHIFT_COFF)&~N_BTMASK_COFF)|((x)&N_BTMASK_COFF))/*------------------------------------------------------------------------*//*  AUXILIARY SYMBOL ENTRY                                                *//*------------------------------------------------------------------------*/union auxent{	struct	{		long            x_tagndx;       /* str, un, or enum tag indx */		union		{			struct			{				unsigned short  x_lnno; /* declaration line number */				unsigned short  x_size; /* str, union, array size */			} x_lnsz;			long    x_fsize;        /* size of function */		} x_misc;		union		{			struct                  /* if ISFCN, tag, or .bb */			{				long    x_lnnoptr;      /* ptr to fcn line # */				long    x_endndx;       /* entry ndx past block end */			}       x_fcn;			struct                  /* if ISARY, up to 4 dimen. */			{				unsigned short  x_dimen[DIMNUM];			}       x_ary;		}               x_fcnary;		unsigned short  x_regcount;   /* number of registers used by func */	}       x_sym;	struct	{		char    x_fname[FILNMLEN];	}       x_file;	struct	{		long    x_scnlen;          /* section length */		unsigned short  x_nreloc;  /* number of relocation entries */		unsigned short  x_nlinno;  /* number of line numbers */	}       x_scn;};#define SYMENT  struct syment#define SYMESZ  18      /* sizeof(SYMENT) */#define AUXENT  union auxent#define AUXESZ  18      /* sizeof(AUXENT) *//*------------------------------------------------------------------------*//*  NAMES OF "SPECIAL" SYMBOLS                                            *//*------------------------------------------------------------------------*/#define _STEXT          ".text"#define _ETEXT          "etext"#define _SDATA          ".data"#define _EDATA          "edata"#define _SBSS           ".bss"#define _END            "end"#define _CINITPTR       "cinit"/*--------------------------------------------------------------------------*//*  ENTRY POINT SYMBOLS                                                     *//*--------------------------------------------------------------------------*/#define _START          "_start"#define _MAIN           "_main"    /*  _CSTART         "_c_int00"          (defined in params.h)  */#define _TVORIG         "_tvorig"#define _TORIGIN        "_torigin"#define _DORIGIN        "_dorigin"#define _SORIGIN        "_sorigin"

⌨️ 快捷键说明

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