|
|
1.1 ! root 1: /* @(#) mfile1.h: 1.1 12/22/83 */ ! 2: ! 3: ! 4: # include "macdefs.h" ! 5: # include "manifest.h" ! 6: ! 7: /* storage classes */ ! 8: # define SNULL 0 ! 9: # define AUTO 1 ! 10: # define EXTERN 2 ! 11: # define STATIC 3 ! 12: # define REGISTER 4 ! 13: # define EXTDEF 5 ! 14: # define LABEL 6 ! 15: # define ULABEL 7 ! 16: # define MOS 8 ! 17: # define PARAM 9 ! 18: # define STNAME 10 ! 19: # define MOU 11 ! 20: # define UNAME 12 ! 21: # define TYPEDEF 13 ! 22: # define FORTRAN 14 ! 23: # define ENAME 15 ! 24: # define MOE 16 ! 25: # define UFORTRAN 17 ! 26: # define USTATIC 18 ! 27: /* field size is ORed in */ ! 28: # define FIELD 0100 ! 29: # define FLDSIZ 077 ! 30: # ifndef NODBG ! 31: extern char *scnames(); ! 32: # endif ! 33: ! 34: /* location counters */ ! 35: # define PROG 0 ! 36: # define ADATA 1 ! 37: # define DATA 2 ! 38: # define ISTRNG 3 ! 39: # define STRNG 4 ! 40: ! 41: /* symbol table flags */ ! 42: # define SMOS 01 ! 43: # define SHIDDEN 02 ! 44: # define SHIDES 04 ! 45: # define SSET 010 ! 46: # define SREF 020 ! 47: # define SNONUNIQ 040 ! 48: # define STAG 0100 ! 49: ! 50: typedef long OFFSZ; ! 51: ! 52: struct symtab { ! 53: char *sname; ! 54: TWORD stype; /* type word */ ! 55: ! 56: char sclass; /* storage class */ ! 57: char slevel; /* scope level */ ! 58: char sflags; /* flags for set, use, hidden, mos, etc. */ ! 59: int offset; /* offset or value */ ! 60: short dimoff; /* offset into the dimension table */ ! 61: short sizoff; /* offset into the size table */ ! 62: short suse; /* line number of last use of the variable */ ! 63: struct symtab *scopelink; /* chain of symbols at same level */ ! 64: }; ! 65: ! 66: ! 67: struct sw { ! 68: CONSZ sval; ! 69: int slab; ! 70: }; ! 71: ! 72: extern struct sw swtab[]; ! 73: extern struct sw *swp; ! 74: extern int swx; ! 75: ! 76: extern int ftnno; ! 77: extern int blevel; ! 78: extern int instruct, stwart; ! 79: ! 80: extern int lineno, nerrors; ! 81: typedef union { ! 82: int intval; ! 83: NODE * nodep; ! 84: } YYSTYPE; ! 85: extern YYSTYPE yylval; ! 86: ! 87: extern CONSZ lastcon; ! 88: extern CONSZ ccast(); ! 89: extern double dcon; ! 90: ! 91: extern char ftitle[]; ! 92: extern struct symtab stab[]; ! 93: extern int curftn; ! 94: extern int strftn; ! 95: extern char *locnames[]; ! 96: extern int curloc; ! 97: extern int curclass; ! 98: extern int curdim; ! 99: extern int dimtab[]; ! 100: extern int paramstk[]; ! 101: extern int paramno; ! 102: extern int argstk[]; ! 103: extern int argsoff[]; ! 104: extern TWORD argty[]; ! 105: extern int argno; ! 106: extern int autooff, argoff, strucoff; ! 107: extern int regvar; ! 108: extern int nextrvar; ! 109: extern int brkflag; ! 110: extern char yytext[]; ! 111: ! 112: extern int strflg; ! 113: ! 114: extern OFFSZ inoff; ! 115: ! 116: extern int reached; ! 117: ! 118: /* tunnel to buildtree for name id's */ ! 119: ! 120: extern int idname; ! 121: ! 122: extern NODE node[]; ! 123: extern NODE *lastfree; ! 124: ! 125: extern int cflag, hflag, pflag; ! 126: ! 127: /* various labels */ ! 128: extern int brklab; ! 129: extern int contlab; ! 130: #ifdef M32B ! 131: extern int swregno; ! 132: #endif ! 133: extern int flostat; ! 134: extern int retlab; ! 135: extern int retstat; ! 136: extern int asavbc[], *psavbc; ! 137: ! 138: /* flags used in structures/unions */ ! 139: ! 140: # define SEENAME 01 ! 141: # define INSTRUCT 02 ! 142: # define INUNION 04 ! 143: # define FUNNYNAME 010 ! 144: # define TAGNAME 020 ! 145: ! 146: /* flags used in the (elementary) flow analysis ... */ ! 147: ! 148: # define FBRK 02 ! 149: # define FCONT 04 ! 150: # define FDEF 010 ! 151: # define FLOOP 020 ! 152: ! 153: /* ! 154: * These defines control "while" and "for" loop code generation. ! 155: * wloop_level and floop_level each must be set to one of these values. ! 156: */ ! 157: #define LL_TOP 0 /* test at loop top */ ! 158: #define LL_BOT 1 /* test at loop bottom */ ! 159: #define LL_DUP 2 /* duplicate loop test at top and bottom */ ! 160: ! 161: #ifdef M32B ! 162: /* for register allocation optimization */ ! 163: extern int fordepth; ! 164: extern int whdepth; ! 165: extern int brdepth; ! 166: # ifdef IMPREGAL ! 167: extern void rainit(), radbl(), raname(), raua(), raftn(); ! 168: # endif ! 169: #endif ! 170: ! 171: /* flags used for return status */ ! 172: ! 173: # define RETVAL 1 ! 174: # define NRETVAL 2 ! 175: ! 176: /* used to mark a constant with no name field */ ! 177: ! 178: # define NONAME 040000 ! 179: ! 180: /* mark an offset which is undefined */ ! 181: ! 182: # define NOOFFSET (-10201) ! 183: ! 184: /* declarations of various functions */ ! 185: ! 186: extern NODE ! 187: *aadjust(), ! 188: *bcon(), ! 189: *bdty(), ! 190: *block(), ! 191: *bpsize(), ! 192: *buildtree(), ! 193: #ifdef M32B ! 194: *myand(), ! 195: *setswreg(), ! 196: #endif ! 197: *clocal(), ! 198: *conval(), ! 199: *convert(), ! 200: *dclstruct(), ! 201: *doszof(), ! 202: *getstr(), ! 203: *makety(), ! 204: *mkty(), ! 205: *oconvert(), ! 206: *offcon(), ! 207: *optim(), ! 208: *pconvert(), ! 209: *ptmatch(), ! 210: *pvconvert(), ! 211: *rstruct(), ! 212: *sconvert(), ! 213: *strargs(), ! 214: *stref(), ! 215: *talloc(), ! 216: *tymatch(), ! 217: *tymerge(), ! 218: *unconvert(), ! 219: *xicolon(); ! 220: ! 221: OFFSZ tsize(), ! 222: psize(); ! 223: ! 224: TWORD types(), ! 225: ctype(); ! 226: ! 227: char *exname(), *exdcon(); ! 228: ! 229: # define checkst(x) ! 230: ! 231: # ifdef SDB ! 232: # include "sdb.h" ! 233: # endif ! 234: ! 235: /* type that is equivalent to pointers in size */ ! 236: # ifndef PTRTYPE ! 237: # define PTRTYPE INT ! 238: # endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.