|
|
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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.