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

📄 defs

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻
字号:
#include <stdio.h>#ifdef unix#	include <ctype.h>#endif#include "ftypes"#include "defines"#include "locdefs"#define VL 6#define MAXINCLUDES 10#define MAXLITERALS 20#define MAXCTL 20#define MAXHASH 401#define MAXSTNO 201#define MAXEXT 200#define MAXEQUIV 150#define MAXLABLIST 125typedef union expression *expptr;typedef union taggedblock *tagptr;typedef union chainedblock *chainp;extern FILEP infile;extern FILEP diagfile;extern FILEP textfile;extern FILEP asmfile;extern FILEP initfile;extern long int headoffset;extern char token [ ];extern int toklen;extern int yylval;extern int lineno;extern char *infname;extern int needkwd;extern struct labelblock *thislabel;extern flag profileflag;extern flag optimflag;extern flag nowarnflag;extern flag ftn66flag;extern flag shiftcase;extern flag undeftype;extern flag shortsubs;extern flag onetripflag;extern flag checksubs;extern flag debugflag;extern int nerr;extern int nwarn;extern int ndata;extern int parstate;extern flag headerdone;extern int blklevel;extern flag saveall;extern flag substars;extern int impltype[ ];extern int implleng[ ];extern int implstg[ ];extern int tyint;extern int tylogical;extern ftnint typesize[];extern int typealign[];extern int procno;extern int proctype;extern char * procname;extern int rtvlabel[ ];extern int fudgelabel;	/* to confuse the pdp11 optimizer */extern struct addrblock *typeaddr;extern struct addrblock *retslot;extern int cxslot;extern int chslot;extern int chlgslot;extern int procclass;extern ftnint procleng;extern int nentry;extern flag multitype;extern int blklevel;extern int lastlabno;extern int lastvarno;extern int lastargslot;extern int argloc;extern ftnint autoleng;extern ftnint bssleng;extern int retlabel;extern int ret0label;extern int dorange;extern int regnum[ ];extern struct nameblock *regnamep[ ];extern int maxregvar;extern int highregvar;extern int nregvar;extern chainp templist;extern chainp holdtemps;extern struct entrypoint *entries;extern struct rplblock *rpllist;extern chainp curdtp;extern ftnint curdtelt;extern flag toomanyinit;extern flag inioctl;extern int iostmt;extern struct addrblock *ioblkp;extern int nioctl;extern int nequiv;extern int nintnames;extern int nextnames;struct chain	{	chainp nextp;	tagptr datap;	};extern chainp chains;struct ctlframe	{	unsigned ctltype:8;	unsigned dostepsign:8;	int ctlabels[4];	int dolabel;	struct nameblock *donamep;	expptr domax;	expptr dostep;	};#define endlabel ctlabels[0]#define elselabel ctlabels[1]#define dobodylabel ctlabels[1]#define doposlabel ctlabels[2]#define doneglabel ctlabels[3]extern struct ctlframe ctls[ ];extern struct ctlframe *ctlstack;extern struct ctlframe *lastctl;struct extsym	{	char extname[XL];	unsigned extstg:4;	unsigned extsave:1;	unsigned extinit:1;	ptr extp;	ftnint extleng;	ftnint maxleng;	};extern struct extsym extsymtab[ ];extern struct extsym *nextext;extern struct extsym *lastext;struct labelblock	{	int labelno;	unsigned blklevel:8;	unsigned labused:1;	unsigned labinacc:1;	unsigned labdefined:1;	unsigned labtype:2;	ftnint stateno;	};extern struct labelblock labeltab[ ];extern struct labelblock *labtabend;extern struct labelblock *highlabtab;struct entrypoint	{	chainp nextp;	struct extsym *entryname;	chainp arglist;	int entrylabel;	int typelabel;	ptr enamep;	};struct primblock	{	unsigned tag:4;	unsigned vtype:4;	struct nameblock *namep;	struct listblock *argsp;	expptr fcharp;	expptr lcharp;	};struct hashentry	{	int hashval;	struct nameblock *varp;	};extern struct hashentry hashtab[ ];extern struct hashentry *lasthash;struct intrpacked	/* bits for intrinsic function description */	{	unsigned f1:3;	unsigned f2:4;	unsigned f3:7;	};struct nameblock	{	unsigned tag:4;	unsigned vtype:4;	unsigned vclass:4;	unsigned vstg:4;	expptr vleng;	char varname[VL];	unsigned vdovar:1;	unsigned vdcldone:1;	unsigned vadjdim:1;	unsigned vsave:1;	unsigned vprocclass:3;	unsigned vregno:4;	union	{		int varno;		chainp vstfdesc;	/* points to (formals, expr) pair */		struct intrpacked intrdesc;	/* bits for intrinsic function */		} vardesc;	struct dimblock *vdim;	int voffset;	};struct paramblock	{	unsigned tag:4;	unsigned vtype:4;	unsigned vclass:4;	expptr vleng;	char varname[VL];	ptr paramval;	} ;struct exprblock	{	unsigned tag:4;	unsigned vtype:4;	unsigned vclass:4;	expptr vleng;	unsigned opcode:6;	expptr leftp;	expptr rightp;	};union constant	{	char *ccp;	ftnint ci;	double cd[2];	};struct constblock	{	unsigned tag:4;	unsigned vtype:4;	expptr vleng;	union constant const;	};struct listblock	{	unsigned tag:4;	unsigned vtype:4;	chainp listp;	};struct addrblock	{	unsigned tag:4;	unsigned vtype:4;	unsigned vclass:4;	unsigned vstg:4;	expptr vleng;	int memno;	expptr memoffset;	unsigned istemp:1;	unsigned ntempelt:10;	};struct errorblock	{	unsigned tag:4;	unsigned vtype:4;	};union expression	{	struct exprblock;	struct addrblock;	struct constblock;	struct errorblock;	struct listblock;	struct primblock;	} ;struct dimblock	{	int ndim;	expptr nelt;	expptr baseoffset;	expptr basexpr;	struct		{		expptr dimsize;		expptr dimexpr;		} dims[1];	};struct impldoblock	{	unsigned tag:4;	unsigned isactive:1;	unsigned isbusy:1;	struct nameblock *varnp;	struct constblock *varvp;	expptr implb;	expptr impub;	expptr impstep;	ftnint impdiff;	ftnint implim;	chainp datalist;	};struct rplblock	/* name replacement block */	{	chainp nextp;	struct nameblock *rplnp;	ptr rplvp;	struct exprblock *rplxp;	int rpltag;	};struct equivblock	{	ptr equivs;	unsigned eqvinit:1;	long int eqvtop;	long int eqvbottom;	} ;#define eqvleng eqvtopextern struct equivblock eqvclass[ ];struct eqvchain	{	chainp nextp;	ptr eqvitem;	long int eqvoffset;	} ;union chainedblock	{	struct chain;	struct entrypoint;	struct rplblock;	struct eqvchain;	};union taggedblock	{	struct nameblock;	struct paramblock;	struct exprblock;	struct constblock;	struct listblock;	struct addrblock;	struct errorblock;	struct primblock;	struct impldoblock;	} ;struct literal	{	short littype;	short litnum;	union	{		ftnint litival;		double litdval;		struct	{			char litclen;	/* small integer */			char litcstr[XL];			} litcval;		} litval;	};extern struct literal litpool[ ];extern int nliterals;/* popular functions with non integer return values */int *ckalloc();char *varstr(), *nounder(), *varunder();char *copyn(), *copys();chainp hookup(), mkchain();ftnint convci();char *convic();char *setdoto();double convcd();struct nameblock *mkname();struct labelblock *mklabel();struct extsym *mkext(), *newentry();struct exprblock *addrof(), *call1(), *call2(), *call3(), *call4();struct addrblock *builtin(), *mktemp(), *mktmpn();struct addrblock *autovar(), *mklhs(), *mkaddr(), *putconst(), *memversion();struct constblock *mkintcon();expptr mkexpr(), mkconv(), mkfunct(), fixexpr(), fixtype();tagptr cpexpr(), mkprim();struct errorblock *errnode();

⌨️ 快捷键说明

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