⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
#include "defs"FILEP infile	= { stdin };FILEP diagfile	= { stderr };FILEP textfile;FILEP asmfile;FILEP initfile;long int headoffset;char token[200];int toklen;int lineno;char *infname;int needkwd;struct labelblock *thislabel	= NULL;flag nowarnflag	= NO;flag ftn66flag	= NO;flag profileflag	= NO;flag optimflag	= NO;flag shiftcase	= YES;flag undeftype	= NO;flag shortsubs	= YES;flag onetripflag	= NO;flag checksubs	= NO;flag debugflag	= NO;int nerr;int nwarn;int ndata;flag saveall;flag substars;int parstate	= OUTSIDE;flag headerdone	= NO;int blklevel;int impltype[26];int implleng[26];int implstg[26];int tyint	= TYLONG ;int tylogical	= TYLONG;ftnint typesize[NTYPES]	= { 1, SZADDR, SZSHORT, SZLONG, SZLONG, 2*SZLONG,	    2*SZLONG, 4*SZLONG, SZLONG, 1, 1, 1};int typealign[NTYPES]	= { 1, ALIADDR, ALISHORT, ALILONG, ALILONG, ALIDOUBLE,	    ALILONG, ALIDOUBLE, ALILONG, 1, 1, 1};int procno;int proctype	= TYUNKNOWN;char *procname;int rtvlabel[NTYPES];int fudgelabel;struct addrblock *typeaddr;struct addrblock *retslot;int cxslot	= -1;int chslot	= -1;int chlgslot	= -1;int procclass	= CLUNKNOWN;int nentry;flag multitype;ftnint procleng;int lastlabno	= 10;int lastvarno;int lastargslot;int argloc;ftnint autoleng;ftnint bssleng	= 0;int retlabel;int ret0label;struct ctlframe ctls[MAXCTL];struct ctlframe *ctlstack	= ctls-1;struct ctlframe *lastctl	= ctls+MAXCTL ;struct nameblock *regnamep[MAXREGVAR];int highregvar;int nregvar;struct extsym extsymtab[MAXEXT];struct extsym *nextext	= extsymtab;struct extsym *lastext	= extsymtab+MAXEXT;struct equivblock eqvclass[MAXEQUIV];struct hashentry hashtab[MAXHASH];struct hashentry *lasthash	= hashtab+MAXHASH;struct labelblock labeltab[MAXSTNO];struct labelblock *labtabend	= labeltab+MAXSTNO;struct labelblock *highlabtab =	labeltab;struct rplblock *rpllist	= NULL;chainp curdtp	= NULL;flag toomanyinit;ftnint curdtelt;chainp templist	= NULL;chainp holdtemps	= NULL;int dorange	= 0;struct entrypoint *entries	= NULL;chainp chains	= NULL;flag inioctl;struct addrblock *ioblkp;int iostmt;int nioctl;int nequiv	= 0;int nintnames	= 0;int nextnames	= 0;struct literal litpool[MAXLITERALS];int nliterals;fileinit(){procno = 0;lastlabno = 10;lastvarno = 0;nextext = extsymtab;nliterals = 0;nerr = 0;ndata = 0;}procinit(){register struct nameblock *p;register struct dimblock *q;register struct hashentry *hp;register struct labelblock *lp;chainp cp;int i;pruse(asmfile, USECONST);#if FAMILY == SCJ	p2pass(USETEXT);#endifparstate = OUTSIDE;headerdone = NO;blklevel = 1;saveall = NO;substars = NO;nwarn = 0;thislabel = NULL;needkwd = 0;++procno;proctype = TYUNKNOWN;procname = "MAIN_    ";procclass = CLUNKNOWN;nentry = 0;multitype = NO;typeaddr = NULL;retslot = NULL;cxslot = -1;chslot = -1;chlgslot = -1;procleng = 0;blklevel = 1;lastargslot = 0;#if TARGET==PDP11	autoleng = 6;#else	autoleng = 0;#endiffor(lp = labeltab ; lp < labtabend ; ++lp)	lp->stateno = 0;for(hp = hashtab ; hp < lasthash ; ++hp)	if(p = hp->varp)		{		frexpr(p->vleng);		if(q = p->vdim)			{			for(i = 0 ; i < q->ndim ; ++i)				{				frexpr(q->dims[i].dimsize);				frexpr(q->dims[i].dimexpr);				}			frexpr(q->nelt);			frexpr(q->baseoffset);			frexpr(q->basexpr);			free(q);			}		free(p);		hp->varp = NULL;		}nintnames = 0;highlabtab = labeltab;ctlstack = ctls - 1;for(cp = templist ; cp ; cp = cp->nextp)	free(cp->datap);frchain(&templist);holdtemps = NULL;dorange = 0;nregvar = 0;highregvar = 0;entries = NULL;rpllist = NULL;inioctl = NO;ioblkp = NULL;nequiv = 0;for(i = 0 ; i<NTYPES ; ++i)	rtvlabel[i] = 0;fudgelabel = 0;if(undeftype)	setimpl(TYUNKNOWN, (ftnint) 0, 'a', 'z');else	{	setimpl(TYREAL, (ftnint) 0, 'a', 'z');	setimpl(tyint,  (ftnint) 0, 'i', 'n');	}setimpl(-STGBSS, (ftnint) 0, 'a', 'z');	/* set class */setlog();}setimpl(type, length, c1, c2)int type;ftnint length;int c1, c2;{int i;char buff[100];if(c1==0 || c2==0)	return;if(c1 > c2)	err( sprintf(buff, "characters out of order in implicit:%c-%c", c1, c2) );else	if(type < 0)		for(i = c1 ; i<=c2 ; ++i)			implstg[i-'a'] = - type;	else		{		type = lengtype(type, (int) length);		if(type != TYCHAR)			length = 0;		for(i = c1 ; i<=c2 ; ++i)			{			impltype[i-'a'] = type;			implleng[i-'a'] = length;			}		}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -