defs.h

来自「<B>Digital的Unix操作系统VAX 4.2源码</B>」· C头文件 代码 · 共 625 行

H
625
字号
/**	@(#)defs.h	1.4	(ULTRIX)	3/14/86*//************************************************************************ *									* *			Copyright (c) 1986 by				* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any  other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   This software is  derived  from  software  received  from  the	* *   University    of   California,   Berkeley,   and   from   Bell	* *   Laboratories.  Use, duplication, or disclosure is  subject  to	* *   restrictions  under  license  agreements  with  University  of	* *   California and with AT&T.						* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or  reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//**************************************************************************			Modification History**	David Metsky		14-Jan-86** 001	Replaced old version with BSD 4.3 version as part of upgrade.**	Based on:	defs.h		5.2		8/29/85**************************************************************************//* * defs.h * * Definitions for f77pass1 * * University of Utah CS Dept modification history: * * $Log:	defs.h,v $ * Revision 5.3  85/08/10  06:31:09  donn * Added missing definition for intrconv(). *  * Revision 5.2  85/08/10  04:01:53  donn * Jerry Berkman's change to add a definition for 'dblflag' and to ifdef * the Fortran 66 compatibility flags. *  * Revision 5.1  85/08/10  03:44:01  donn * 4.3 alpha *  * Revision 2.3  85/06/07  21:06:48  root * Add copyright *  * Revision 2.2  85/01/11  21:02:58  donn * Added 'issaved' bit to addrblocks to help implement SAVE statements. *  * Revision 2.1  84/07/19  12:02:46  donn * Changed comment headers for UofU. *  * Revision 1.2  84/02/27  00:49:40  donn * Added external references to lists of argument temporaries, used in the * Berkeley changes to reduce offsets of data. *  */#include <stdio.h>#ifdef unix#	include <ctype.h>#endif#include "ftypes.h"#include "defines.h"#include "machdefs.h"#define VL 16#define MAXDIM 20#define MAXINCLUDES 10#define MAXLITERALS 30#define MAXCTL 20#define MAXHASH 1009#define MAXSTNO 401#define MAXEXT 200#define MAXEQUIV 150#define MAXLABLIST 256#define MAXDEBUGFLAG 20typedef union Expression *expptr;typedef union Taggedblock *tagptr;typedef struct Chain *chainp;typedef struct Addrblock *Addrp;typedef struct Tempblock *Tempp;typedef struct Constblock *Constp;typedef struct Exprblock *Exprp;typedef struct Nameblock *Namep;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 lineno;extern char *infname;extern int needkwd;extern struct Labelblock *thislabel;extern int maxctl;extern int maxequiv;extern int maxstno;extern int maxhash;extern int maxext;extern flag profileflag;extern flag dblflag;extern flag optimflag;extern flag nowarnflag;extern flag ftn66flag;#ifdef ONLY66extern flag no66flag;extern flag noextflag;#endifextern flag shiftcase;extern flag undeftype;extern flag shortsubs;extern flag onetripflag;extern flag checksubs;extern flag debugflag[];extern flag equivdcl;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 Addrp typeaddr;extern Addrp 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 Namep regnamep[ ];extern int maxregvar;extern int highregvar;extern int nregvar;extern ftnint lowbss;extern ftnint highbss;extern int bsslabel;extern flag anyinits;extern flag anylocals;extern chainp templist;extern chainp argtemplist;extern chainp activearglist;extern int maxdim;extern chainp holdtemps;extern struct Entrypoint *entries;extern struct Rplblock *rpllist;extern struct Chain *curdtp;extern ftnint curdtelt;extern flag toomanyinit;extern flag inioctl;extern int iostmt;extern Addrp ioblkp;extern int nioctl;extern int nequiv;extern int eqvstart;	/* offset to eqv number to guarantee uniqueness */extern int nintnames;#ifdef SDBextern int dbglabel;extern flag sdbflag;#endifextern int cdatafile;extern int cchkfile;extern int vdatafile;extern int vchkfile;extern char cdatafname[];extern char cchkfname[];extern char vdatafname[];extern char vchkfname[];extern long cdatahwm;extern long vdatahwm;struct Chain	{	chainp nextp;	tagptr datap;	};extern chainp chains;struct Headblock	{	field tag;	field vtype;	field vclass;	field vstg;	expptr vleng;	} ;struct Ctlframe	{	unsigned ctltype:8;	unsigned dostepsign:8;	int ctlabels[4];	int dolabel;	Namep 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+1];	field extstg;	unsigned extsave:1;	unsigned extinit:1;	chainp extp;	ftnint extleng;	ftnint maxleng;	char init;	long initoffset;	};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	{	struct Entrypoint *entnextp;	struct Extsym *entryname;	chainp arglist;	int entrylabel;	int typelabel;	Namep enamep;	};struct Primblock	{	field tag;	field vtype;	Namep namep;	struct Listblock *argsp;	expptr fcharp;	expptr lcharp;	};struct Hashentry	{	int hashval;	Namep 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	{	field tag;	field vtype;	field vclass;	field vstg;	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;		struct Intrpacked intrdesc;	/* bits for intrinsic function*/		} vardesc;	struct Dimblock *vdim;	ftnint voffset;	union	{		chainp namelist;	/* points to chain of names in */		chainp vstfdesc;	/* points to (formals, expr) pair */		} varxptr;	char inlcomm;	char init;	long initoffset;	ftnint varsize;	};struct Paramblock	{	field tag;	field vtype;	field vclass;	field vstg;	expptr vleng;	char varname[VL];	expptr paramval;	} ;struct Exprblock	{	field tag;	field vtype;	field vclass;	field vstg;	expptr vleng;	unsigned opcode:6;	expptr leftp;	expptr rightp;	};union Constant	{	char *ccp;	ftnint ci;	double cd[2];	};/* This define is put here because of a change in the C compiler.  The * word "const" has been added to the list of keywords, becoming a * declaration type.  The use of "const" in this structure definition * caused errors from the compiler as a result.   * As a quick fix, this define statement was used to avoid changing * the use of "const" everywhere it appears in this directory.  If, at * any time it becomes necessary to use the new declaration type in this * directory, all the occurances of "const" should be replaced with an * appropriate word, and this define should be removed. */#define const Conststruct Constblock	{	field tag;	field vtype;	field vclass;	field vstg;	expptr vleng;	union Constant const;	};struct Listblock	{	field tag;	field vtype;	chainp listp;	};struct Addrblock	{	field tag;	field vtype;	field vclass;	field vstg;	expptr vleng;	int memno;	expptr memoffset;	unsigned istemp:1;        unsigned isarray:1;	unsigned issaved:1;	unsigned ntempelt:10;	ftnint varleng;	ftnint varsize;	};struct Tempblock	{	field tag;	field vtype;	field vclass;	expptr vleng;	Addrp memalloc;	unsigned istemp:1;	unsigned ntempelt:10;	ftnint varleng;	};struct Errorblock	{	field tag;	field vtype;	};union Expression	{	field tag;	struct Headblock headblock;	struct Exprblock exprblock;	struct Addrblock addrblock;	struct Tempblock tempblock;	struct Constblock constblock;	struct Errorblock errorblock;	struct Listblock listblock;	struct Primblock primblock;	} ;struct Dimblock	{	int ndim;	expptr nelt;	expptr baseoffset;	expptr basexpr;	struct		{		expptr dimsize;		expptr dimexpr;		expptr lb;		expptr lbaddr;		expptr ub;		expptr ubaddr;		} dims[1];	};struct Impldoblock	{	field tag;	unsigned isactive:1;	unsigned isbusy:1;	Namep varnp;	Constp varvp;	chainp impdospec;	expptr implb;	expptr impub;	expptr impstep;	ftnint impdiff;	ftnint implim;	struct Chain *datalist;	};struct Rplblock	/* name replacement block */	{	struct Rplblock *rplnextp;	Namep rplnp;	expptr rplvp;	expptr rplxp;	int rpltag;	};struct Equivblock	{	struct Eqvchain *equivs;	flag eqvinit;	long int eqvtop;	long int eqvbottom;	char inlcomm;	char init;	long initoffset;	} ;#define eqvleng eqvtopextern struct Equivblock *eqvclass;struct Eqvchain	{	struct Eqvchain *eqvnextp;	union		{		struct Primblock *eqvlhs;		Namep eqvname;		} eqvitem;	long int eqvoffset;	} ;union Taggedblock	{	field tag;	struct Headblock headblock;	struct Nameblock nameblock;	struct Paramblock paramblock;	struct Exprblock exprblock;	struct Constblock constblock;	struct Listblock listblock;	struct Addrblock addrblock;	struct Tempblock tempblock;	struct Errorblock errorblock;	struct Primblock primblock;	struct Impldoblock 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();Namep mkname();struct Labelblock *mklabel(), *execlab();struct Extsym *mkext(), *newentry();expptr addrof(), call1(), call2(), call3(), call4();Tempp mktmpn();Addrp builtin(), mktemp(), altmpn(), mkaltemp(), mkaltmpn(), autovar();Addrp mkplace(), mkaddr(), putconst(), memversion();expptr mkprim(), mklhs(), mkexpr(), mkconv(), intrconv(), mkfunct();expptr fixexpr(), fixtype();expptr errnode(), mkintcon();tagptr cpexpr();ftnint lmin(), lmax(), iarrlen();

⌨️ 快捷键说明

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