Annotation of coherent/d/bin/cc/c/h/ops.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * This header file defines everything which
        !             3:  * may be shared between passes of the compiler.
        !             4:  * This includes limits, types,
        !             5:  * the opcodes, both in the scratch files and
        !             6:  * in trees, that are used by all parts of the C compiler
        !             7:  * and any other compilers that use the C compiler back
        !             8:  * end (coder and optimizer).
        !             9:  *
        !            10:  * Limits.
        !            11:  */
        !            12: #define NARGS   32             /* Max. args in a function */
        !            13: #define        NCSYMB  128             /* Max symbol */
        !            14: #define        NMNAME  64              /* Longest module name */
        !            15: 
        !            16: /*
        !            17:  * Scratch file operators.
        !            18:  */
        !            19: #define        NOTUSED 0               /* Pads block in RSX */
        !            20: #define FNAME  1               /* File name */
        !            21: #define LLABEL 2               /* Local label */
        !            22: #define        FINISH  3               /* Soft end of file */
        !            23: #define GLABEL 4               /* Global label */
        !            24: #define SLABEL 5               /* Static label */
        !            25: #define BLOCK  6               /* Block of bytes */
        !            26: #define        PROLOG  7               /* Function prolog */
        !            27: #define        EPILOG  8               /* Function epilog */
        !            28: #define LLLINK 9               /* Switch table link */
        !            29: #define        AUTOS   10              /* Auto adjust */
        !            30: #define JUMP   11              /* Jump */
        !            31: #define        CODE    12              /* Machine instruction */
        !            32: #define        LINE    13              /* Line # */    
        !            33: #define REXPR  14              /* Return expression */
        !            34: #define EEXPR  15              /* Effect expression */
        !            35: #define SEXPR  16              /* Switch expression */
        !            36: #define SBODY  17              /* Switch body */
        !            37: #define IEXPR  18              /* Init. expression */
        !            38: #define IBLOCK 19              /* Init. absolute block */
        !            39: #define ALIGN  20              /* Allignment */
        !            40: #define TEXPR  21              /* True jump expression */
        !            41: #define FEXPR  22              /* False jump expression */
        !            42: #define ENTER  23              /* Enter an area */
        !            43: #define        MNAME   24              /* Module name */
        !            44: #define COMM   25              /* Common in D space */
        !            45: #define DLOCAT 26              /* Debug label location */
        !            46: #define DLABEL 27              /* Debug label item */
        !            47:                                /* Segment guess, withdrawn */
        !            48: #define UREFER 29              /* Undefined reference for floating printf */
        !            49: 
        !            50: /*
        !            51:  * Symbolic segments. The "SANY" code is
        !            52:  * never used in an "ENTER"; it only appears as a
        !            53:  * segment residence flag in an identifier ("LID" or
        !            54:  * "GID") node.
        !            55:  */
        !            56: #define        SCODE   0               /* Code */
        !            57: #define        SLINK   1               /* Links et al; can be code */
        !            58: #define        SPURE   2               /* Pure data */
        !            59: #define        SSTRN   3               /* Strings */
        !            60: #define        SDATA   4               /* General data */
        !            61: #define        SBSS    5               /* Uninitialized data */
        !            62: #define        SANY    6               /* Any segment */
        !            63: #define SSTACK 7               /* Stack segment */
        !            64: #define SALIEN 8               /* Some other language */
        !            65: #define SDBG   9               /* Debugging information */
        !            66: #define SSYM   10              /* Symbol declarations */
        !            67: 
        !            68: #define NSEG   11              /* Number of segments */
        !            69: 
        !            70: /*
        !            71:  * Tree operators.
        !            72:  * Operators are divided into 
        !            73:  * little subranges.
        !            74:  * 0<=x<=9     Machine independent leaf.
        !            75:  * 10<=x<=19   Machine specific leaf.
        !            76:  * 20<=x<=79   Machine independent operator.
        !            77:  * 80<=x<=99   Machine specific operator.
        !            78:  * 100 up.     Keywords, etc. for a parser.
        !            79:  * No tree passed to the code generator
        !            80:  * can contain a machine specific
        !            81:  * operator.
        !            82:  */
        !            83: #define        MILBASE 0               /* Machine independent leaf base */
        !            84: #define        MDLBASE 15              /* Machine dependent leaf base */
        !            85: #define        MIOBASE 20              /* Machine independent operator base */
        !            86: #define        MDOBASE 80              /* Machine dependent operator base */
        !            87: #define        ETCBASE 100             /* Misc. base */
        !            88: 
        !            89: #define NIL    0               /* End of tree */
        !            90: #define ICON   1               /* Integer constant */
        !            91: #define LCON   2               /* Long constant */
        !            92: #define DCON   3               /* Double constant */
        !            93: #define        LID     5               /* Local id */
        !            94: #define        GID     6               /* Global id */
        !            95: #define        REG     7               /* Register */
        !            96: #define        AID     8               /* Automatic id */
        !            97: #define        PID     9               /* Parameter id */
        !            98: #define ZCON   10              /* Sizeof constant */
        !            99: 
        !           100: #define ADD    20              /* + */
        !           101: #define SUB    21              /* - */
        !           102: #define MUL    22              /* * */
        !           103: #define DIV    23              /* / */
        !           104: #define REM    24              /* % */
        !           105: #define AND    25              /* & */
        !           106: #define OR     26              /* | */
        !           107: #define XOR    27              /* ^ */
        !           108: #define SHL    28              /* << */
        !           109: #define SHR    29              /* >> */
        !           110: 
        !           111: #define AADD   30              /* += */
        !           112: #define ASUB   31              /* -= */
        !           113: #define AMUL   32              /* *= */
        !           114: #define ADIV   33              /* /= */
        !           115: #define AREM   34              /* %= */
        !           116: #define AAND   35              /* &= */
        !           117: #define AOR    36              /* |= */
        !           118: #define AXOR   37              /* ^= */
        !           119: #define ASHL   38              /* <<= */
        !           120: #define ASHR   39              /* >>= */
        !           121: 
        !           122: #define EQ     40              /* == */
        !           123: #define NE     41              /* != */
        !           124: #define GT     42              /* > */
        !           125: #define GE     43              /* >= */
        !           126: #define LE     44              /* <= */
        !           127: #define LT     45              /* < */
        !           128: #define UGT    46              /* > if unsigned */
        !           129: #define UGE    47              /* >= if unsigned */
        !           130: #define ULE    48              /* <= if unsigned */
        !           131: #define ULT    49              /* < if unsigned */
        !           132: 
        !           133: #define STAR   50              /* Indirection */
        !           134: #define ADDR   51              /* Address of */
        !           135: #define NEG    52              /* - */
        !           136: #define COM    53              /* ~ */
        !           137: #define NOT    54              /* ! */
        !           138: #define QUEST  55              /* ? */
        !           139: #define COLON  56              /* : */
        !           140: #define INCBEF 57              /* ++ prefix */
        !           141: #define DECBEF 58              /* -- prefix */
        !           142: #define INCAFT 59              /* ++ postfix */
        !           143: #define DECAFT 60              /* -- postfix */
        !           144: #define COMMA  61              /* , */
        !           145: #define CALL   62              /* Call of function */
        !           146: #define ANDAND 63              /* && */
        !           147: #define OROR   64              /* || */
        !           148: #define CAST   65              /* Type cast */
        !           149: #define CONVERT        66              /* Conversion */
        !           150: #define FIELD  67              /* Field op */
        !           151: #define SIZEOF 68              /* sizeof */
        !           152: #define ASSIGN 69              /* = */
        !           153: #define        NOP     70              /* Drain */
        !           154: #define INIT    71             /* Init. type */
        !           155: #define        ARGLST  72              /* Link for arglist */
        !           156: #define        LEAF    73              /* Leaf node */
        !           157: #define        FIXUP   74              /* Table fix up */
        !           158: #define        BLKMOVE 75              /* Block move operation */
        !           159: #define POS    76              /* Unary plus */
        !           160: 
        !           161: /*
        !           162:  * Special names for Types, Dims, and Storage classes
        !           163:  * for use in passing debugger type information between passes.
        !           164:  */
        !           165: #define DT_NONE  0             /* No type (yet) */
        !           166: #define DT_CHAR  1             /* Char */
        !           167: #define DT_UCHAR 2             /* Unsigned char */
        !           168: #define DT_SHORT 3             /* Short */
        !           169: #define DT_USHORT 4            /* Unsigned short */
        !           170: #define DT_INT   5             /* Int */
        !           171: #define DT_UINT  6             /* Unsigned int */
        !           172: #define DT_LONG  7             /* Long */
        !           173: #define DT_ULONG 8             /* Unsigned long */
        !           174: #define DT_FLOAT 9             /* Float */
        !           175: #define DT_DOUBLE 10           /* Double */
        !           176: #define        DT_VOID 11              /* void */
        !           177: #define DT_STRUCT 12           /* Struct */
        !           178: #define DT_UNION 13            /* Union */
        !           179: #define DT_ENUM  14            /* Enumeration */
        !           180: 
        !           181: #define DD_PTR   15            /* Pointer */
        !           182: #define DD_FUNC  16            /* Function returning */
        !           183: #define DD_ARRAY 17            /* Array */
        !           184: 
        !           185: #define DX_MEMBS 18            /* Member list */
        !           186: #define DX_NAME  19            /* Named type */
        !           187: 
        !           188: /*
        !           189:  * Subranges denote associated information:
        !           190:  *     SEX-LAB         only name string.
        !           191:  *     AUTO-CALL       name and (int) value.
        !           192:  *     MOS-MOU         name, width, offset, value.
        !           193:  */
        !           194: #define DC_SEX   21            /* Static external */
        !           195: #define DC_GDEF  22            /* Global def. */
        !           196: #define DC_GREF  23            /* Global ref. */
        !           197: #define DC_TYPE  24            /* Typedef name */
        !           198: #define DC_STAG  25            /* Structure tag */
        !           199: #define DC_UTAG  26            /* Union tag */
        !           200: #define DC_ETAG  27            /* Enumeration tag */
        !           201: #define DC_FILE  28            /* Source file name */
        !           202: #define DC_LINE  29            /* Line number */
        !           203: #define DC_LAB   30            /* Label */
        !           204: 
        !           205: #define DC_AUTO  31            /* Auto */
        !           206: #define DC_PAUTO 32            /* Parametric auto */
        !           207: #define DC_REG   33            /* Register */
        !           208: #define DC_PREG  34            /* Parametric register */
        !           209: #define DC_SIN   35            /* Static internal */
        !           210: #define DC_MOE   36            /* Member of enumeration */
        !           211: #define DC_CALL  37            /* Function call */
        !           212: 
        !           213: #define DC_MOS   38            /* Member of structure */
        !           214: #define DC_MOU   39            /* Member of union */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.