home *** CD-ROM | disk | FTP | other *** search
- /*
- * C pass 2 header
- */
-
- #define swsiz 200
- #define ossiz 500
-
- struct tnode {
- int op;
- int type;
- int degree;
- struct tnode *tr1, *tr2;
- };
-
- struct bnode {
- int bop;
- struct tnode *btree;
- int lbl;
- int cond;
- };
-
- struct tname {
- int nop;
- int ntype;
- int elsize;
- char class;
- char regno;
- int offset;
- int nloc;
- };
-
- /*
- * for field selections
- */
- struct tsel {
- int op;
- int type;
- int degree;
- struct tnode *tr1;
- char flen;
- char bitoffs;
- };
-
- struct tconst {
- int cop;
- int ctype;
- int cdeg;
- int value;
- };
-
- struct optab {
- char tabdeg1;
- char tabtyp1;
- char tabdeg2;
- char tabtyp2;
- char *tabstring;
- };
-
- struct table {
- int tabop;
- struct optab *tabp;
- };
-
- struct instab {
- int iop;
- char *str1;
- char *str2;
- };
-
- struct swtab {
- int swlab;
- int swval;
- };
-
- char maprel[];
- char notrel[];
- int nreg;
- int isn;
- int namsiz;
- int line;
- char ascbuf[518];
- int nerror;
- struct table cctab[];
- struct table efftab[];
- struct table regtab[];
- struct table sptab[];
- struct table lsptab[];
- struct instab instab[];
- struct instab branchtab[];
- int opdope[];
- char *opntab[];
- int nstack;
- int nfloat;
- int *spacep;
- int treespace[ossiz];
- int eolflg;
- struct tconst czero, cone, fczero;
-
- /*
- operators
- */
- #define EOF 0
- #define SEMI 1
- #define LBRACE 2
- #define RBRACE 3
- #define LBRACK 4
- #define RBRACK 5
- #define LPARN 6
- #define RPARN 7
- #define COLON 8
- #define COMMA 9
- #define FSEL 10
-
- #define KEYW 19
- #define NAME 20
- #define CON 21
- #define STRING 22
- #define FCON 23
- #define SFCON 24
-
- #define AUTOI 27
- #define AUTOD 28
- #define INCBEF 30
- #define DECBEF 31
- #define INCAFT 32
- #define DECAFT 33
- #define EXCLA 34
- #define AMPER 35
- #define STAR 36
- #define NEG 37
- #define COMPL 38
-
- #define DOT 39
- #define PLUS 40
- #define MINUS 41
- #define TIMES 42
- #define DIVIDE 43
- #define MOD 44
- #define RSHIFT 45
- #define LSHIFT 46
- #define AND 47
- #define NAND 55
- #define OR 48
- #define EXOR 49
- #define ARROW 50
- #define ITOF 51
- #define FTOI 52
- #define LOGAND 53
- #define LOGOR 54
- #define FTOL 56
- #define LTOF 57
- #define ITOL 58
- #define LTOI 59
-
- #define EQUAL 60
- #define NEQUAL 61
- #define LESSEQ 62
- #define LESS 63
- #define GREATEQ 64
- #define GREAT 65
- #define LESSEQP 66
- #define LESSP 67
- #define GREATQP 68
- #define GREATP 69
-
- #define ASPLUS 70
- #define ASMINUS 71
- #define ASTIMES 72
- #define ASDIV 73
- #define ASMOD 74
- #define ASRSH 75
- #define ASLSH 76
- #define ASSAND 77
- #define ASOR 78
- #define ASXOR 79
- #define ASSIGN 80
- #define TAND 81
- #define LTIMES 82
- #define LDIV 83
- #define LMOD 84
- #define ASSNAND 85
- #define LASTIMES 86
- #define LASDIV 87
- #define LASMOD 88
-
- #define QUEST 90
- #define LLSHIFT 91
- #define ASLSHL 92
- #define CALL1 98
- #define CALL2 99
- #define CALL 100
- #define MCALL 101
- #define JUMP 102
- #define CBRANCH 103
- #define INIT 104
- #define SETREG 105
- #define LOAD 106
- #define RFORCE 110
-
- /*
- * Intermediate code operators
- */
- #define BRANCH 111
- #define LABEL 112
- #define NLABEL 113
- #define RLABEL 114
- #define BDATA 200
- #define WDATA 201
- #define PROG 202
- #define DATA 203
- #define BSS 204
- #define CSPACE 205
- #define SSPACE 206
- #define SYMDEF 207
- #define SAVE 208
- #define RETRN 209
- #define EVEN 210
- #define PROFIL 212
- #define SWIT 213
- #define EXPR 214
- #define SNAME 215
- #define RNAME 216
- #define ANAME 217
- #define NULL 218
-
- /*
- * types
- */
- #define INT 0
- #define CHAR 1
- #define FLOAT 2
- #define DOUBLE 3
- #define STRUCT 4
- #define RSTRUCT 5
- #define LONG 6
-
- #define TYLEN 2
- #define TYPE 07
- #define XTYPE (03<<3)
- #define PTR 010
- #define FUNC 020
- #define ARRAY 030
-
- /*
- storage classes
- */
- #define KEYWC 1
- #define MOS 10
- #define AUTO 11
- #define EXTERN 12
- #define STATIC 13
- #define REG 14
- #define STRTAG 15
- #define ARG 16
- #define OFFS 20
- #define XOFFS 21
- #define SOFFS 22
-
- /*
- Flag bits
- */
-
- #define BINARY 01
- #define LVALUE 02
- #define RELAT 04
- #define ASSGOP 010
- #define LWORD 020
- #define RWORD 040
- #define COMMUTE 0100
- #define RASSOC 0200
- #define LEAF 0400
- #define CNVRT 01000
-