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

📄 cvinfo.h

📁 CC386 is a general-purpose 32-bit C compiler. It is not an optimizing compiler but given that the co
💻 H
📖 第 1 页 / 共 5 页
字号:
#define T_LONG          0x0012  // 32 bit signed
#define T_ULONG         0x0022  // 32 bit unsigned
#define T_PLONG         0x0112  // near pointer to 32 bit signed
#define T_PULONG        0x0122  // near pointer to 32 bit unsigned
#define T_PFLONG        0x0212  // far pointer to 32 bit signed
#define T_PFULONG       0x0222  // far pointer to 32 bit unsigned
#define T_PHLONG        0x0312  // huge pointer to 32 bit signed
#define T_PHULONG       0x0322  // huge pointer to 32 bit unsigned

#define T_32PLONG       0x0412  // 16:32 near pointer to 32 bit signed
#define T_32PULONG      0x0422  // 16:32 near pointer to 32 bit unsigned
#define T_32PFLONG      0x0512  // 16:32 far pointer to 32 bit signed
#define T_32PFULONG     0x0522  // 16:32 far pointer to 32 bit unsigned




//      32 bit int types


#define T_INT4          0x0074  // 32 bit signed int
#define T_UINT4         0x0075  // 32 bit unsigned int
#define T_PINT4         0x0174  // near pointer to 32 bit signed int
#define T_PUINT4        0x0175  // near pointer to 32 bit unsigned int
#define T_PFINT4        0x0274  // far pointer to 32 bit signed int
#define T_PFUINT4       0x0275  // far pointer to 32 bit unsigned int
#define T_PHINT4        0x0374  // huge pointer to 32 bit signed int
#define T_PHUINT4       0x0375  // huge pointer to 32 bit unsigned int

#define T_32PINT4       0x0474  // 16:32 near pointer to 32 bit signed int
#define T_32PUINT4      0x0475  // 16:32 near pointer to 32 bit unsigned int
#define T_32PFINT4      0x0574  // 16:32 far pointer to 32 bit signed int
#define T_32PFUINT4     0x0575  // 16:32 far pointer to 32 bit unsigned int




//      64 bit quad types


#define T_QUAD          0x0013  // 64 bit signed
#define T_UQUAD         0x0023  // 64 bit unsigned
#define T_PQUAD         0x0113  // near pointer to 64 bit signed
#define T_PUQUAD        0x0123  // near pointer to 64 bit unsigned
#define T_PFQUAD        0x0213  // far pointer to 64 bit signed
#define T_PFUQUAD       0x0223  // far pointer to 64 bit unsigned
#define T_PHQUAD        0x0313  // huge pointer to 64 bit signed
#define T_PHUQUAD       0x0323  // huge pointer to 64 bit unsigned
#define T_32PQUAD       0x0413  // 16:32 near pointer to 64 bit signed
#define T_32PUQUAD      0x0423  // 16:32 near pointer to 64 bit unsigned
#define T_32PFQUAD      0x0513  // 16:32 far pointer to 64 bit signed
#define T_32PFUQUAD     0x0523  // 16:32 far pointer to 64 bit unsigned



//      64 bit int types


#define T_INT8          0x0076  // 64 bit signed int
#define T_UINT8         0x0077  // 64 bit unsigned int
#define T_PINT8         0x0176  // near pointer to 64 bit signed int
#define T_PUINT8        0x0177  // near pointer to 64 bit unsigned int
#define T_PFINT8        0x0276  // far pointer to 64 bit signed int
#define T_PFUINT8       0x0277  // far pointer to 64 bit unsigned int
#define T_PHINT8        0x0376  // huge pointer to 64 bit signed int
#define T_PHUINT8       0x0377  // huge pointer to 64 bit unsigned int

#define T_32PINT8       0x0476  // 16:32 near pointer to 64 bit signed int
#define T_32PUINT8      0x0477  // 16:32 near pointer to 64 bit unsigned int
#define T_32PFINT8      0x0576  // 16:32 far pointer to 64 bit signed int
#define T_32PFUINT8     0x0577  // 16:32 far pointer to 64 bit unsigned int


#if CC_BIGINT
//      128 bit octet types


#define T_OCT           0x0014  // 128 bit signed
#define T_UOCT          0x0024  // 128 bit unsigned
#define T_POCT          0x0114  // near pointer to 128 bit signed
#define T_PUOCT         0x0124  // near pointer to 128 bit unsigned
#define T_PFOCT         0x0214  // far pointer to 128 bit signed
#define T_PFUOCT        0x0224  // far pointer to 128 bit unsigned
#define T_PHOCT         0x0314  // huge pointer to 128 bit signed
#define T_PHUOCT        0x0324  // huge pointer to 128 bit unsigned

#define T_32POCT        0x0414  // 16:32 near pointer to 128 bit signed
#define T_32PUOCT       0x0424  // 16:32 near pointer to 128 bit unsigned
#define T_32PFOCT       0x0514  // 16:32 far pointer to 128 bit signed
#define T_32PFUOCT      0x0524  // 16:32 far pointer to 128 bit unsigned

//      128 bit int types


#define T_INT16         0x0078  // 128 bit signed int
#define T_UINT16        0x0079  // 128 bit unsigned int
#define T_PINT16        0x0178  // near pointer to 128 bit signed int
#define T_PUINT16       0x0179  // near pointer to 128 bit unsigned int
#define T_PFINT16       0x0278  // far pointer to 128 bit signed int
#define T_PFUINT16      0x0279  // far pointer to 128 bit unsigned int
#define T_PHINT16       0x0378  // huge pointer to 128 bit signed int
#define T_PHUINT16      0x0379  // huge pointer to 128 bit unsigned int

#define T_32PINT16      0x0478  // 16:32 near pointer to 128 bit signed int
#define T_32PUINT16     0x0479  // 16:32 near pointer to 128 bit unsigned int
#define T_32PFINT16     0x0578  // 16:32 far pointer to 128 bit signed int
#define T_32PFUINT16    0x0579  // 16:32 far pointer to 128 bit unsigned int

#endif




//      32 bit real types


#define T_REAL32        0x0040  // 32 bit real
#define T_PREAL32       0x0140  // near pointer to 32 bit real
#define T_PFREAL32      0x0240  // far pointer to 32 bit real
#define T_PHREAL32      0x0340  // huge pointer to 32 bit real
#define T_32PREAL32     0x0440  // 16:32 near pointer to 32 bit real
#define T_32PFREAL32    0x0540  // 16:32 far pointer to 32 bit real



//      48 bit real types


#define T_REAL48        0x0044  // 48 bit real
#define T_PREAL48       0x0144  // near pointer to 48 bit real
#define T_PFREAL48      0x0244  // far pointer to 48 bit real
#define T_PHREAL48      0x0344  // huge pointer to 48 bit real
#define T_32PREAL48     0x0444  // 16:32 near pointer to 48 bit real
#define T_32PFREAL48    0x0544  // 16:32 far pointer to 48 bit real




//      64 bit real types


#define T_REAL64        0x0041  // 64 bit real
#define T_PREAL64       0x0141  // near pointer to 64 bit real
#define T_PFREAL64      0x0241  // far pointer to 64 bit real
#define T_PHREAL64      0x0341  // huge pointer to 64 bit real
#define T_32PREAL64     0x0441  // 16:32 near pointer to 64 bit real
#define T_32PFREAL64    0x0541  // 16:32 far pointer to 64 bit real




//      80 bit real types


#define T_REAL80        0x0042  // 80 bit real
#define T_PREAL80       0x0142  // near pointer to 80 bit real
#define T_PFREAL80      0x0242  // far pointer to 80 bit real
#define T_PHREAL80      0x0342  // huge pointer to 80 bit real
#define T_32PREAL80     0x0442  // 16:32 near pointer to 80 bit real
#define T_32PFREAL80    0x0542  // 16:32 far pointer to 80 bit real




//      128 bit real types


#define T_REAL128       0x0043  // 128 bit real
#define T_PREAL128      0x0143  // near pointer to 128 bit real
#define T_PFREAL128     0x0243  // far pointer to 128 bit real
#define T_PHREAL128     0x0343  // huge pointer to 128 bit real
#define T_32PREAL128    0x0443  // 16:32 near pointer to 128 bit real
#define T_32PFREAL128   0x0543  // 16:32 far pointer to 128 bit real




//      32 bit complex types


#define T_CPLX32        0x0050  // 32 bit complex
#define T_PCPLX32       0x0150  // near pointer to 32 bit complex
#define T_PFCPLX32      0x0250  // far pointer to 32 bit complex
#define T_PHCPLX32      0x0350  // huge pointer to 32 bit complex
#define T_32PCPLX32     0x0450  // 16:32 near pointer to 32 bit complex
#define T_32PFCPLX32    0x0550  // 16:32 far pointer to 32 bit complex




//      64 bit complex types


#define T_CPLX64        0x0051  // 64 bit complex
#define T_PCPLX64       0x0151  // near pointer to 64 bit complex
#define T_PFCPLX64      0x0251  // far pointer to 64 bit complex
#define T_PHCPLX64      0x0351  // huge pointer to 64 bit complex
#define T_32PCPLX64     0x0451  // 16:32 near pointer to 64 bit complex
#define T_32PFCPLX64    0x0551  // 16:32 far pointer to 64 bit complex




//      80 bit complex types


#define T_CPLX80        0x0052  // 80 bit complex
#define T_PCPLX80       0x0152  // near pointer to 80 bit complex
#define T_PFCPLX80      0x0252  // far pointer to 80 bit complex
#define T_PHCPLX80      0x0352  // huge pointer to 80 bit complex
#define T_32PCPLX80     0x0452  // 16:32 near pointer to 80 bit complex
#define T_32PFCPLX80    0x0552  // 16:32 far pointer to 80 bit complex




//      128 bit complex types


#define T_CPLX128       0x0053  // 128 bit complex
#define T_PCPLX128      0x0153  // near pointer to 128 bit complex
#define T_PFCPLX128     0x0253  // far pointer to 128 bit complex
#define T_PHCPLX128     0x0353  // huge pointer to 128 bit real
#define T_32PCPLX128    0x0453  // 16:32 near pointer to 128 bit complex
#define T_32PFCPLX128   0x0553  // 16:32 far pointer to 128 bit complex




//      boolean types


#define T_BOOL08        0x0030  // 8 bit boolean
#define T_BOOL16        0x0031  // 16 bit boolean
#define T_BOOL32        0x0032  // 32 bit boolean
#define T_BOOL64        0x0033  // 64 bit boolean
#define T_PBOOL08       0x0130  // near pointer to  8 bit boolean
#define T_PBOOL16       0x0131  // near pointer to 16 bit boolean
#define T_PBOOL32       0x0132  // near pointer to 32 bit boolean
#define T_PBOOL64       0x0133  // near pointer to 64 bit boolean
#define T_PFBOOL08      0x0230  // far pointer to  8 bit boolean
#define T_PFBOOL16      0x0231  // far pointer to 16 bit boolean
#define T_PFBOOL32      0x0232  // far pointer to 32 bit boolean
#define T_PFBOOL64      0x0233  // far pointer to 64 bit boolean
#define T_PHBOOL08      0x0330  // huge pointer to  8 bit boolean
#define T_PHBOOL16      0x0331  // huge pointer to 16 bit boolean
#define T_PHBOOL32      0x0332  // huge pointer to 32 bit boolean
#define T_PHBOOL64      0x0333  // huge pointer to 64 bit boolean

#define T_32PBOOL08     0x0430  // 16:32 near pointer to 8 bit boolean
#define T_32PFBOOL08    0x0530  // 16:32 far pointer to 8 bit boolean
#define T_32PBOOL16     0x0431  // 16:32 near pointer to 18 bit boolean
#define T_32PFBOOL16    0x0531  // 16:32 far pointer to 16 bit boolean
#define T_32PBOOL32     0x0432  // 16:32 near pointer to 32 bit boolean
#define T_32PFBOOL32    0x0532  // 16:32 far pointer to 32 bit boolean
#define T_32PBOOL64     0x0433  // 16:32 near pointer to 64 bit boolean
#define T_32PFBOOL64    0x0533  // 16:32 far pointer to 64 bit boolean


#define T_NCVPTR        0x01f0  // CV Internal type for created near pointers
#define T_FCVPTR        0x02f0  // CV Internal type for created far pointers
#define T_HCVPTR        0x03f0  // CV Internal type for created huge pointers
#define T_32NCVPTR      0x04f0  // CV Internal type for created near 32-bit pointers
#define T_32FCVPTR      0x05f0  // CV Internal type for created far 32-bit pointers
#define T_64NCVPTR      0x06f0  // CV Internal type for created near 64-bit pointers

#define CV_IS_INTERNAL_PTR(typ) (CV_IS_PRIMITIVE(typ) && \
                                 CV_TYPE(typ) == CV_CVRESERVED && \
                                 CV_TYP_IS_PTR(typ))


/**     No leaf index can have a value of 0x0000.  The leaf indices are
 *      separated into ranges depending upon the use of the type record.
 *      The second range is for the type records that are directly referenced
 *      in symbols. The first range is for type records that are not
 *      referenced by symbols but instead are referenced by other type
 *      records.  All type records must have a starting leaf index in these
 *      first two ranges.  The third range of leaf indices are used to build
 *      up complex lists such as the field list of a class type record.  No
 *      type record can begin with one of the leaf indices. The fourth ranges
 *      of type indices are used to represent numeric data in a symbol or
 *      type record. These leaf indices are greater than 0x8000.  At the
 *      point that type or symbol processor is expecting a numeric field, the
 *      next two bytes in the type record are examined.  If the value is less
 *      than 0x8000, then the two bytes contain the numeric value. If the
 *      value is greater than 0x8000, then the data follows the leaf index in
 *      a format specified by the leaf index. The final range of leaf indices
 *      are used to force alignment of subfields within a complex type record..
 */



// leaf indices starting records but referenced from symbol records

#define LF_VTSHAPE      0x000a
#define LF_COBOL0       0x000b
#define LF_COBOL1       0x000c
#define LF_LABEL        0x000e
#define LF_NULL         0x000f
#define LF_NOTTRAN      0x0010
#define LF_ENDPRECOMP   0x0014  // not referenced from symbol
#define LF_TYPESERVER   0x0016  // not referenced from symbol

// leaf indices starting records but referenced only from type records

#define LF_LIST         0x0203
#define LF_REFSYM       0x020c

#define LF_ENUMERATE    0x0403

#define LF_MODIFIER     0x1001
#define LF_POINTER      0x1002
#define LF_ARRAY        0x1003
#define LF_CLASS        0x1004
#define LF_STRUCTURE    0x1005
#define LF_UNION        0x1006
#define LF_ENUM         0x1007
#define LF_PROCEDURE    0x1008
#define LF_MFUNCTION    0x1009
#define LF_BARRAY       0x100b
#define LF_DIMARRAY     0x100c
#define LF_VFTPATH      0x100d
#define LF_PRECOMP      0x100e  // not referenced from symbol
#define LF_OEM          0x100f  // oem definable type string

#define LF_SKIP         0x1200
#define LF_ARGLIST      0x1201
#define LF_DEFARG       0x1202
#define LF_FIELDLIST    0x1203
#define LF_DERIVED      0x1204
#define LF_BITFIELD     0x1205
#define LF_METHODLIST   0x1206
#define LF_DIMCONU      0x1207
#define LF_DIMCONLU     0x1208
#define LF_DIMVARU      0x1209
#define LF_DIMVARLU     0x120a

#define LF_BCLASS       0x1400
#define LF_VBCLASS      0x1401
#define LF_IVBCLASS     0x1402
#define LF_FRIENDFCN    0x1403
#define LF_INDEX        0x1404
#define LF_MEMBER       0x1405
#define LF_STMEMBER     0x1406
#define LF_METHOD       0x1407
#define LF_NESTTYPE     0x1408
#define LF_VFUNCTAB     0x1409
#define LF_FRIENDCLS    0x140a
#define LF_ONEMETHOD    0x140b
#define LF_VFUNCOFF     0x140c
#define LF_NESTTYPEEX	0x140d
#define LF_MEMBERMODIFY 0x140e

#define LF_NUMERIC      0x8000

#define LF_CHAR         0x8000
#define LF_SHORT        0x8001
#define LF_USHORT       0x8002
#define LF_LONG         0x8003
#define LF_ULONG        0x8004
#define LF_REAL32       0x8005
#define LF_REAL64       0x8006
#define LF_REAL80       0x8007
#define LF_REAL128      0x8008
#define LF_QUADWORD     0x8009
#define LF_UQUADWORD    0x800a
#define LF_REAL48       0x800b
#define LF_COMPLEX32    0x800c
#define LF_COMPLEX64    0x800d
#define LF_COMPLEX80    0x800e
#define LF_COMPLEX128   0x800f
#define LF_VARSTRING    0x8010

#if CC_BIGINT
#define LF_OCTWORD      0x8017
#define LF_UOCTWORD     0x8018
#endif

#define LF_PAD0         0xf0
#define LF_PAD1         0xf1
#define LF_PAD2         0xf2
#define LF_PAD3         0xf3
#define LF_PAD4         0xf4
#define LF_PAD5         0xf5
#define LF_PAD6         0xf6
#define LF_PAD7         0xf7
#define LF_PAD8         0xf8
#define LF_PAD9         0xf9
#define LF_PAD10        0xfa
#define LF_PAD11        0xfb
#define LF_PAD12        0xfc
#define LF_PAD13        0xfd
#define LF_PAD14        0xfe
#define LF_PAD15        0xff

// end of leaf indices




//      Type enum for pointer records
//      Pointers can be one of the following types


typedef enum CV_ptrtype_e {
    CV_PTR_NEAR         = 0x00, // near pointer
    CV_PTR_FAR          = 0x01, // far pointer

⌨️ 快捷键说明

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