1: /*
   2:  * C code generator header
   3:  */
   4: 
   5: #include <stdio.h>
   6: 
   7: #define LTYPE   long    /* change to int for no long consts */
   8: #define NCPS    8
   9: #define NULL    0
  10: 
  11: /*
  12:  *  Tree node for unary and binary
  13:  */
  14: struct  tnode {
  15:     int op;
  16:     int type;
  17:     int degree;
  18:     struct  tnode *tr1, *tr2;
  19: };
  20: 
  21: /*
  22:  * tree names for locals
  23:  */
  24: struct  tname {
  25:     int op;
  26:     int type;
  27:     char    class;
  28:     char    regno;
  29:     int offset;
  30:     int nloc;
  31: };
  32: 
  33: /*
  34:  * tree names for externals
  35:  */
  36: struct  xtname {
  37:     int op;
  38:     int type;
  39:     char    class;
  40:     char    regno;
  41:     int offset;
  42:     char    name[NCPS];
  43: };
  44: 
  45: struct  tconst {
  46:     int op;
  47:     int type;
  48:     int value;
  49: };
  50: 
  51: /*
  52:  * long constants
  53:  */
  54: struct  lconst {
  55:     int op;
  56:     int type;
  57:     LTYPE   lvalue;
  58: };
  59: 
  60: struct  ftconst {
  61:     int op;
  62:     int type;
  63:     int value;
  64:     double  fvalue;
  65: };
  66: 
  67: /*
  68:  * Node used for field assignemnts
  69:  */
  70: struct  fasgn {
  71:     int op;
  72:     int type;
  73:     int degree;
  74:     struct  tnode *tr1, *tr2;
  75:     int mask;
  76: };
  77: 
  78: struct  optab {
  79:     char    tabdeg1;
  80:     char    tabtyp1;
  81:     char    tabdeg2;
  82:     char    tabtyp2;
  83:     char    *tabstring;
  84: };
  85: 
  86: struct  table {
  87:     int tabop;
  88:     struct  optab *tabp;
  89: };
  90: 
  91: struct  instab {
  92:     int iop;
  93:     char    *str1;
  94:     char    *str2;
  95: };
  96: 
  97: struct  swtab {
  98:     int swlab;
  99:     int swval;
 100: };
 101: 
 102: char    maprel[];
 103: char    notrel[];
 104: int nreg;
 105: int isn;
 106: int namsiz;
 107: int line;
 108: int nerror;
 109: struct  table   cctab[];
 110: struct  table   efftab[];
 111: struct  table   regtab[];
 112: struct  table   sptab[];
 113: struct  table   lsptab[1];
 114: struct  instab  instab[];
 115: struct  instab  branchtab[];
 116: int opdope[];
 117: char    *opntab[];
 118: int nstack;
 119: int nfloat;
 120: struct  tname   sfuncr;
 121: char    *funcbase;
 122: char    *curbase;
 123: char    *coremax;
 124: struct tconst czero, cone;
 125: struct  ftconst fczero;
 126: long    totspace;
 127: /*
 128:  * Some special stuff for long comparisons
 129:  */
 130: int xlab1, xlab2, xop, xzero;
 131: 
 132: /*
 133: 	operators
 134: */
 135: #define EOFC    0
 136: #define SEMI    1
 137: #define LBRACE  2
 138: #define RBRACE  3
 139: #define LBRACK  4
 140: #define RBRACK  5
 141: #define LPARN   6
 142: #define RPARN   7
 143: #define COLON   8
 144: #define COMMA   9
 145: #define FSEL    10
 146: #define FSELR   11
 147: #define FSELT   12
 148: #define FSELA   16
 149: #define ULSH    17
 150: #define ASULSH  18
 151: 
 152: #define KEYW    19
 153: #define NAME    20
 154: #define CON 21
 155: #define STRING  22
 156: #define FCON    23
 157: #define SFCON   24
 158: #define LCON    25
 159: #define SLCON   26
 160: 
 161: #define AUTOI   27
 162: #define AUTOD   28
 163: #define INCBEF  30
 164: #define DECBEF  31
 165: #define INCAFT  32
 166: #define DECAFT  33
 167: #define EXCLA   34
 168: #define AMPER   35
 169: #define STAR    36
 170: #define NEG 37
 171: #define COMPL   38
 172: 
 173: #define DOT 39
 174: #define PLUS    40
 175: #define MINUS   41
 176: #define TIMES   42
 177: #define DIVIDE  43
 178: #define MOD 44
 179: #define RSHIFT  45
 180: #define LSHIFT  46
 181: #define AND 47
 182: #define ANDN    55
 183: #define OR  48
 184: #define EXOR    49
 185: #define ARROW   50
 186: #define ITOF    51
 187: #define FTOI    52
 188: #define LOGAND  53
 189: #define LOGOR   54
 190: #define FTOL    56
 191: #define LTOF    57
 192: #define ITOL    58
 193: #define LTOI    59
 194: #define ITOP    13
 195: #define PTOI    14
 196: #define LTOP    15
 197: 
 198: #define EQUAL   60
 199: #define NEQUAL  61
 200: #define LESSEQ  62
 201: #define LESS    63
 202: #define GREATEQ 64
 203: #define GREAT   65
 204: #define LESSEQP 66
 205: #define LESSP   67
 206: #define GREATQP 68
 207: #define GREATP  69
 208: 
 209: #define ASPLUS  70
 210: #define ASMINUS 71
 211: #define ASTIMES 72
 212: #define ASDIV   73
 213: #define ASMOD   74
 214: #define ASRSH   75
 215: #define ASLSH   76
 216: #define ASAND   77
 217: #define ASOR    78
 218: #define ASXOR   79
 219: #define ASSIGN  80
 220: #define TAND    81
 221: #define LTIMES  82
 222: #define LDIV    83
 223: #define LMOD    84
 224: #define ASANDN  85
 225: #define LASTIMES 86
 226: #define LASDIV  87
 227: #define LASMOD  88
 228: 
 229: #define QUEST   90
 230: #define MAX 93
 231: #define MAXP    94
 232: #define MIN 95
 233: #define MINP    96
 234: #define LLSHIFT 91
 235: #define ASLSHL  92
 236: #define SEQNC   97
 237: #define CALL1   98
 238: #define CALL2   99
 239: #define CALL    100
 240: #define MCALL   101
 241: #define JUMP    102
 242: #define CBRANCH 103
 243: #define INIT    104
 244: #define SETREG  105
 245: #define LOAD    106
 246: #define ITOC    109
 247: #define RFORCE  110
 248: 
 249: /*
 250:  * Intermediate code operators
 251:  */
 252: #define BRANCH  111
 253: #define LABEL   112
 254: #define NLABEL  113
 255: #define RLABEL  114
 256: #define STRASG  115
 257: #define STRSET  116
 258: #define BDATA   200
 259: #define PROG    202
 260: #define DATA    203
 261: #define BSS 204
 262: #define CSPACE  205
 263: #define SSPACE  206
 264: #define SYMDEF  207
 265: #define SAVE    208
 266: #define RETRN   209
 267: #define EVEN    210
 268: #define PROFIL  212
 269: #define SWIT    213
 270: #define EXPR    214
 271: #define SNAME   215
 272: #define RNAME   216
 273: #define ANAME   217
 274: #define NULLOP  218
 275: #define SETSTK  219
 276: #define SINIT   220
 277: #define GLOBAL  221
 278: #define C3BRANCH    222
 279: 
 280: /*
 281:  *	types
 282:  */
 283: #define INT 0
 284: #define CHAR    1
 285: #define FLOAT   2
 286: #define DOUBLE  3
 287: #define STRUCT  4
 288: #define RSTRUCT 5
 289: #define LONG    6
 290: #define UNSIGN  7
 291: 
 292: #define TYLEN   2
 293: #define TYPE    07
 294: #define XTYPE   (03<<3)
 295: #define PTR 010
 296: #define FUNC    020
 297: #define ARRAY   030
 298: 
 299: /*
 300: 	storage	classes
 301: */
 302: #define KEYWC   1
 303: #define MOS 10
 304: #define AUTO    11
 305: #define EXTERN  12
 306: #define STATIC  13
 307: #define REG 14
 308: #define STRTAG  15
 309: #define ARG 16
 310: #define OFFS    20
 311: #define XOFFS   21
 312: #define SOFFS   22
 313: 
 314: /*
 315: 	Flag	bits
 316: */
 317: 
 318: #define BINARY  01
 319: #define LVALUE  02
 320: #define RELAT   04
 321: #define ASSGOP  010
 322: #define LWORD   020
 323: #define RWORD   040
 324: #define COMMUTE 0100
 325: #define RASSOC  0200
 326: #define LEAF    0400
 327: #define CNVRT   01000

Defined variables

branchtab defined in line 115; used 1 times
cctab defined in line 109; used 17 times
cone defined in line 124; used 2 times
coremax defined in line 123; used 3 times
curbase defined in line 122; used 6 times
czero defined in line 124; used 2 times
efftab defined in line 110; used 14 times
fczero defined in line 125; never used
funcbase defined in line 121; used 5 times
instab defined in line 114; used 1 times
isn defined in line 105; used 25 times
line defined in line 107; used 3 times
lsptab defined in line 113; used 6 times
maprel defined in line 102; used 2 times
namsiz defined in line 106; never used
nerror defined in line 108; used 3 times
nfloat defined in line 119; used 2 times
notrel defined in line 103; used 3 times
nreg defined in line 104; used 8 times
nstack defined in line 118; used 13 times
opdope defined in line 116; used 31 times
opntab defined in line 117; used 3 times
regtab defined in line 111; used 14 times
sfuncr defined in line 120; used 6 times
sptab defined in line 112; used 7 times
totspace defined in line 126; used 2 times
xlab1 defined in line 130; used 6 times
xlab2 defined in line 130; used 7 times
xop defined in line 130; used 4 times
xzero defined in line 130; used 7 times

Defined struct's

fasgn defined in line 70; used 6 times
ftconst defined in line 60; used 6 times
instab defined in line 91; used 12 times
lconst defined in line 54; used 10 times
optab defined in line 78; used 4 times
swtab defined in line 97; used 10 times
table defined in line 86; used 26 times
tconst defined in line 45; used 8 times
tname defined in line 24; used 10 times
tnode defined in line 14; used 166 times
xtname defined in line 36; used 2 times

Defined macros

AMPER defined in line 168; used 13 times
ANAME defined in line 273; never used
AND defined in line 181; used 6 times
ANDN defined in line 182; used 4 times
ARG defined in line 309; never used
ARRAY defined in line 297; never used
ARROW defined in line 185; never used
ASAND defined in line 216; used 2 times
ASANDN defined in line 224; used 2 times
ASDIV defined in line 212; used 3 times
ASLSH defined in line 215; used 6 times
ASLSHL defined in line 235; used 2 times
ASMINUS defined in line 210; used 1 times
ASMOD defined in line 213; used 3 times
ASOR defined in line 217; used 2 times
ASPLUS defined in line 209; used 3 times
ASRSH defined in line 214; used 2 times
ASSGOP defined in line 321; never used
ASSIGN defined in line 219; used 6 times
ASTIMES defined in line 211; used 2 times
ASULSH defined in line 150; used 4 times
ASXOR defined in line 218; used 1 times
AUTO defined in line 304; used 1 times
AUTOD defined in line 162; used 3 times
AUTOI defined in line 161; used 3 times
BDATA defined in line 258; never used
BINARY defined in line 318; used 8 times
BRANCH defined in line 252; never used
BSS defined in line 261; never used
C3BRANCH defined in line 278; never used
CALL defined in line 239; used 2 times
CALL1 defined in line 237; used 2 times
CALL2 defined in line 238; used 2 times
CBRANCH defined in line 242; used 1 times
CHAR defined in line 284; used 18 times
CNVRT defined in line 327; used 4 times
COLON defined in line 143; never used
COMMA defined in line 144; used 3 times
COMMUTE defined in line 324; used 1 times
COMPL defined in line 171; used 5 times
CON defined in line 154; used 50 times
CSPACE defined in line 262; never used
DATA defined in line 260; never used
DECAFT defined in line 166; used 4 times
DECBEF defined in line 164; used 2 times
DIVIDE defined in line 177; used 4 times
DOT defined in line 173; never used
DOUBLE defined in line 286; used 7 times
EOFC defined in line 135; never used
EQUAL defined in line 198; used 17 times
EVEN defined in line 267; never used
EXCLA defined in line 167; used 1 times
EXOR defined in line 184; used 2 times
EXPR defined in line 270; used 1 times
EXTERN defined in line 305; used 4 times
FCON defined in line 156; used 10 times
FLOAT defined in line 285; used 5 times
FSEL defined in line 145; used 3 times
FSELA defined in line 148; used 1 times
FSELR defined in line 146; used 1 times
FSELT defined in line 147; used 2 times
FTOI defined in line 187; used 1 times
FTOL defined in line 190; used 2 times
FUNC defined in line 296; never used
GLOBAL defined in line 277; never used
GREAT defined in line 203; used 12 times
GREATEQ defined in line 202; used 6 times
GREATP defined in line 207; used 6 times
GREATQP defined in line 206; used 6 times
INCAFT defined in line 165; used 6 times
INCBEF defined in line 163; used 1 times
INIT defined in line 243; never used
INT defined in line 283; used 27 times
ITOC defined in line 246; never used
ITOF defined in line 186; used 1 times
ITOL defined in line 192; used 18 times
ITOP defined in line 194; used 1 times
JUMP defined in line 241; never used
KEYW defined in line 152; never used
KEYWC defined in line 302; never used
LABEL defined in line 253; never used
LASDIV defined in line 226; used 1 times
LASMOD defined in line 227; used 1 times
LASTIMES defined in line 225; used 2 times
LBRACE defined in line 137; never used
LBRACK defined in line 139; never used
LCON defined in line 158; used 16 times
LDIV defined in line 222; used 1 times
LEAF defined in line 326; used 10 times
LESS defined in line 201; used 12 times
LESSEQ defined in line 200; used 7 times
LESSEQP defined in line 204; used 7 times
LESSP defined in line 205; used 6 times
LLSHIFT defined in line 234; used 2 times
LMOD defined in line 223; used 1 times
LOAD defined in line 245; used 5 times
LOGAND defined in line 188; used 3 times
LOGOR defined in line 189; used 3 times
LONG defined in line 289; used 38 times
LPARN defined in line 141; never used
LSHIFT defined in line 180; used 7 times
LTIMES defined in line 221; used 2 times
LTOF defined in line 191; used 2 times
LTOI defined in line 193; used 8 times
LTOP defined in line 196; never used
LTYPE defined in line 7; used 1 times
  • in line 57
LVALUE defined in line 319; used 1 times
LWORD defined in line 322; never used
MAX defined in line 230; never used
MAXP defined in line 231; never used
MCALL defined in line 240; never used
MIN defined in line 232; never used
MINP defined in line 233; never used
MINUS defined in line 175; used 3 times
MOD defined in line 178; used 3 times
MOS defined in line 303; never used
NAME defined in line 153; used 25 times
NCPS defined in line 8; used 1 times
  • in line 42
NEG defined in line 170; used 2 times
NEQUAL defined in line 199; used 14 times
NLABEL defined in line 254; never used
NULL defined in line 9; never used
NULLOP defined in line 274; never used
OFFS defined in line 310; used 5 times
OR defined in line 183; used 2 times
PLUS defined in line 174; used 24 times
PROFIL defined in line 268; never used
PROG defined in line 259; never used
PTOI defined in line 195; used 3 times
PTR defined in line 295; used 13 times
QUEST defined in line 229; used 1 times
RASSOC defined in line 325; never used
RBRACE defined in line 138; never used
RBRACK defined in line 140; never used
REG defined in line 307; used 11 times
RELAT defined in line 320; used 14 times
RETRN defined in line 266; never used
RFORCE defined in line 247; used 3 times
RLABEL defined in line 255; never used
RNAME defined in line 272; never used
RPARN defined in line 142; never used
RSHIFT defined in line 179; used 3 times
RSTRUCT defined in line 288; never used
RWORD defined in line 323; never used
SAVE defined in line 265; never used
SEMI defined in line 136; never used
SEQNC defined in line 236; never used
SETREG defined in line 244; never used
SETSTK defined in line 275; never used
SFCON defined in line 157; used 8 times
SINIT defined in line 276; never used
SLCON defined in line 159; never used
SNAME defined in line 271; never used
SOFFS defined in line 312; used 1 times
SSPACE defined in line 263; never used
STAR defined in line 169; used 16 times
STATIC defined in line 306; used 2 times
STRASG defined in line 256; used 2 times
STRING defined in line 155; never used
STRSET defined in line 257; used 1 times
STRTAG defined in line 308; never used
STRUCT defined in line 287; used 11 times
SWIT defined in line 269; never used
SYMDEF defined in line 264; never used
TAND defined in line 220; used 3 times
TIMES defined in line 176; used 12 times
TYLEN defined in line 292; used 2 times
TYPE defined in line 293; used 8 times
ULSH defined in line 149; used 3 times
UNSIGN defined in line 290; used 26 times
XOFFS defined in line 311; used 1 times
XTYPE defined in line 294; used 6 times

Usage of this include

Last modified: 1979-05-07
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2322
Valid CSS Valid XHTML 1.0 Strict