123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- /*
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * See the copyright notice in the ACK home directory, in the file "Copyright".
- */
- #include "ass00.h"
- #include "assex.h"
- #ifndef NORCSID
- static char rcs_id[] = "$Id$" ;
- static char rcs_ass[]= RCS_ASS ;
- static char rcs_ex[] = RCS_EX ;
- #endif
- /*
- * global data
- */
- int wordsize ;
- int ptrsize ;
- cons_t maxadr ;
- cons_t maxint;
- cons_t maxdint;
- cons_t maxunsig;
- cons_t maxdunsig;
- /*
- The structure containing used for procedure environment stacking
- */
- stat_t pstate ;
- /*
- * pointers to not yet allocated storage
- */
- glob_t *mglobs; /* pointer to module symbols */
- glob_t *xglobs; /* pointer to extern symbols */
- proc_t *mprocs; /* pointer to local procs */
- proc_t *xprocs; /* pointer to external procs */
- ptab_t *proctab; /* pointer to proctab[] */
- /*
- * some array and structures of known size
- */
- FILE *ifile; /* input file buffer */
- FILE *tfile; /* code file buffer */
- FILE *dfile; /* data file buffer */
- FILE *rtfile; /* code file buffer */
- FILE *rdfile; /* data file buffer */
- char string[MAXSTRING];
- /*
- * some other pointers
- */
- glob_t *lastglosym; /* last global symbol */
- glob_t *curglosym; /* current global symbol */
- relc_t *f_data = (relc_t *)0 ; /* first data reloc pointer */
- relc_t *l_data = (relc_t *)0 ; /* last data reloc pointer */
- relc_t *f_text = (relc_t *)0 ; /* first text reloc pointer */
- relc_t *l_text = (relc_t *)0 ; /* last text reloc pointer */
- /*
- * some indices
- */
- int strlngth; /* index in string[] */
- FOFFSET inpoff; /* offset in current input file */
- FOFFSET libeof; /* ceiling for above number */
- /*
- * some other counters
- */
- int procnum; /* generic for unique proc-descr. */
- cons_t prog_size; /* length of current proc */
- int max_bytes;
- int pass;
- int line_num; /* line number for error messages */
- int nerrors; /* number of nonfatal errors */
- cons_t consiz; /* size of U,I or F value */
- cons_t textbytes; /* size of code file */
- cons_t databytes; /* highwater mark in data */
- FOFFSET dataoff; /* size of data file */
- FOFFSET textoff; /* size of text file */
- FOFFSET lastoff; /* previous size before last block */
- int datamode; /* what kind of data */
- int datablocks; /* number of datablocks written out */
- relc_t *lastheader; /* pointer into datareloc */
- cons_t holbase;
- cons_t holsize;
- int unresolved; /* # of unresolved references */
- int sourcelines; /* number of lines in source program*/
- int intflags = 1; /* flags for interpreter */
- /*
- * some flags
- */
- int archmode; /* reading library ? */
- int procflag; /* print "namelist" of procedures */
- #ifdef DUMP
- int c_flag; /* print unused opcodes */
- char opcnt1[256]; /* count primary opcodes */
- char opcnt2[256]; /* count secondary opcodes */
- char opcnt3[256]; /* count long opcodes */
- #endif
- int d_flag = 0; /* don't dump */
- int r_flag = 0; /* don't dump relocation tables */
- #ifdef JOHAN
- int jflag;
- #endif
- int wflag = 0; /* don't issue warning messages */
- int Uflag = 0; /* exit status 0 on unresolved refs */
- int eof_seen;
- int mod_sizes; /* Size info in current module ok? */
- #define BASE (sizeof (struct lines) - sizeof (addr_u))
- char linesize[VALLOW+1] = {
- BASE, /* MISSING */
- BASE + sizeof (cons_t), /* CONST */
- BASE + sizeof prp_cast, /* PROCNAME */
- BASE + sizeof gbp_cast, /* GLOSYM */
- BASE + sizeof lbp_cast, /* LOCSYM */
- BASE + sizeof (struct sad_df), /* GLOOFF */
- BASE + sizeof (struct sad_ln), /* LINES */
- BASE /* VALLOW */
- } ;
- /*
- * miscellaneous
- */
- char *progname; /* argv[0] */
- char *curfile = 0; /* name of current file */
- char *eout = "e.out";
- arch_t archhdr;
- siz_t sizes[NDEFAULT] = {
- /* mlab, glab,mproc,xproc, proc */
- { 151, 29, 31, 73, 130 }, /* small */
- { 307, 127, 151, 401, 460 }, /* medium */
- { 601, 251, 151, 401, 600 }, /* large */
- {1601, 1601, 1601, 1601, 2000 } /* extra large */
- };
- siz_t *oursize = &sizes[2] ; /* point to selected sizes */
|