Annotation of 3BSD/cmd/mip/mfile1, revision 1.1.1.1

1.1       root        1: 
                      2: # include "macdefs"
                      3: # include "manifest"
                      4: 
                      5: /*     storage classes  */
                      6: # define SNULL 0
                      7: # define AUTO 1
                      8: # define EXTERN 2
                      9: # define STATIC 3
                     10: # define REGISTER 4
                     11: # define EXTDEF 5
                     12: # define LABEL 6
                     13: # define ULABEL 7
                     14: # define MOS 8
                     15: # define PARAM 9
                     16: # define STNAME 10
                     17: # define MOU 11
                     18: # define UNAME 12
                     19: # define TYPEDEF 13
                     20: # define FORTRAN 14
                     21: # define ENAME 15
                     22: # define MOE 16
                     23: # define UFORTRAN 17
                     24: # define USTATIC 18
                     25:        /* field size is ORed in */
                     26: # define FIELD 0100
                     27: # define FLDSIZ 077
                     28: extern char *scnames();
                     29: 
                     30: /*     location counters */
                     31: # define PROG 0
                     32: # define DATA 1
                     33: # define ADATA 2
                     34: # define STRNG 3
                     35: # define ISTRNG 4
                     36: # define STAB 5
                     37: 
                     38: 
                     39: /* symbol table flags */
                     40: # define SMOS 01
                     41: # define SHIDDEN 02
                     42: # define SHIDES 04
                     43: # define SSET 010
                     44: # define SREF 020
                     45: 
                     46: # define FIXDEF(p) outstab(p)
                     47: # ifndef FIXDEF
                     48: # define FIXDEF(p)
                     49: #endif
                     50: 
                     51:        /* alignment of initialized quantities */
                     52: # ifndef AL_INIT
                     53: #      define  AL_INIT ALINT
                     54: # endif
                     55: 
                     56: struct symtab {
                     57:        char sname[NCHNAM];
                     58:        TWORD stype;  /* type word */
                     59: 
                     60:        char sclass;  /* storage class */
                     61:        char slevel;  /* scope level */
                     62:        char sflags;  /* flags for set, use, hidden, mos, etc. */
                     63:        int offset;  /* offset or value */
                     64:        short dimoff; /* offset into the dimension table */
                     65:        short sizoff; /* offset into the size table */
                     66:        short suse;  /* line number of last use of the variable */
                     67:        };
                     68: 
                     69: 
                     70: # ifdef ONEPASS
                     71: /* NOPREF must be defined for use in first pass tree machine */
                     72: # define NOPREF 020000  /* no preference for register assignment */
                     73: #else
                     74: 
                     75: union ndu {
                     76:        struct {
                     77:                int op;
                     78:                TWORD type;
                     79:                int cdim, csiz;
                     80:                NODE *left;
                     81:                NODE * right;
                     82:                };
                     83:        
                     84:        struct {
                     85:                /* this structure is the same as above,
                     86:                   but is used when a value, rather than
                     87:                   address, is kept in +left */
                     88:                int op;
                     89:                TWORD type;
                     90:                int cdim, csiz;
                     91:                CONSZ lval;
                     92:                int rval;
                     93:                };
                     94:        
                     95:        struct {
                     96:                /* this structure is used when a floating point constant
                     97:                   is being computed */
                     98:                int op;
                     99:                TWORD type;
                    100:                int cdim, csiz;
                    101:                double dval;
                    102:                };
                    103: 
                    104:        };
                    105: # endif
                    106: 
                    107: struct sw {
                    108:        CONSZ sval;
                    109:        int slab;
                    110:        };
                    111: 
                    112: extern struct sw swtab[];
                    113: extern struct sw *swp;
                    114: extern int swx;
                    115: 
                    116: extern int ftnno;
                    117: extern int blevel;
                    118: extern int instruct, stwart;
                    119: 
                    120: extern int lineno, nerrors;
                    121: typedef union {
                    122:        int intval;
                    123:        NODE * nodep;
                    124:        } YYSTYPE;
                    125: extern YYSTYPE yylval;
                    126: 
                    127: extern CONSZ lastcon;
                    128: extern double dcon;
                    129: 
                    130: extern char ftitle[];
                    131: extern char ititle[];
                    132: extern struct symtab stab[];
                    133: extern int curftn;
                    134: extern int curclass;
                    135: extern int curdim;
                    136: extern int dimtab[];
                    137: extern int paramstk[];
                    138: extern int paramno;
                    139: extern int autooff, argoff, strucoff;
                    140: extern int regvar;
                    141: extern int minrvar;
                    142: extern int brkflag;
                    143: extern char yytext[];
                    144: 
                    145: extern int strflg;
                    146: 
                    147: extern OFFSZ inoff;
                    148: 
                    149: extern int reached;
                    150: 
                    151: /*     tunnel to buildtree for name id's */
                    152: 
                    153: extern int idname;
                    154: 
                    155: extern NODE node[];
                    156: extern NODE *lastfree;
                    157: 
                    158: extern int cflag, hflag, pflag;
                    159: 
                    160: /* various labels */
                    161: extern int brklab;
                    162: extern int contlab;
                    163: extern int flostat;
                    164: extern int retlab;
                    165: extern int retstat;
                    166: extern int asavbc[], *psavbc;
                    167: 
                    168: /*     flags used in structures/unions */
                    169: 
                    170: # define SEENAME 01
                    171: # define INSTRUCT 02
                    172: # define INUNION 04
                    173: # define FUNNYNAME 010
                    174: 
                    175: /*     flags used in the (elementary) flow analysis ... */
                    176: 
                    177: # define FBRK 02
                    178: # define FCONT 04
                    179: # define FDEF 010
                    180: # define FLOOP 020
                    181: 
                    182: /*     flags used for return status */
                    183: 
                    184: # define RETVAL 1
                    185: # define NRETVAL 2
                    186: 
                    187: /*     used to mark a constant with no name field */
                    188: 
                    189: # define NONAME 040000
                    190: 
                    191:        /* mark an offset which is undefined */
                    192: 
                    193: # define NOOFFSET (-10201)
                    194: 
                    195: /*     declarations of various functions */
                    196: 
                    197: extern NODE
                    198:        *buildtree(),
                    199:        *bdty(),
                    200:        *mkty(),
                    201:        *rstruct(),
                    202:        *dclstruct(),
                    203:        *getstr(),
                    204:        *tymerge(),
                    205:        *stref(),
                    206:        *offcon(),
                    207:        *bcon(),
                    208:        *bpsize(),
                    209:        *convert(),
                    210:        *pconvert(),
                    211:        *oconvert(),
                    212:        *ptmatch(),
                    213:        *tymatch(),
                    214:        *makety(),
                    215:        *block(),
                    216:        *doszof(),
                    217:        *talloc(),
                    218:        *optim(),
                    219:        *strargs(),
                    220:        *clocal();
                    221: 
                    222: OFFSZ  tsize(),
                    223:        psize();
                    224: 
                    225: TWORD  types();
                    226: 
                    227: 
                    228: double atof();
                    229: 
                    230: char *exname(), *exdcon();
                    231: 
                    232: # define checkst(x)
                    233: 
                    234: # ifndef CHARCAST
                    235: /* to make character constants into character connstants */
                    236: /* this is a macro to defend against cross-compilers, etc. */
                    237: # define CHARCAST(x) (char)(x)
                    238: # endif
                    239: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.