|
|
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.