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

📄 c.h

📁 非常好的源码
💻 H
📖 第 1 页 / 共 2 页
字号:
	unsigned short references;
	unsigned short firstuse;
	unsigned short lastuse;
	union {
		struct {
			int label;
			Symbol equatedto;
		} l;
		struct {
			unsigned cfields:1;
			unsigned vfields:1;
			Table ftab;		/* omit */
			Field flist;
		} s;
		int value;
		Symbol *idlist;
		struct {
			Value v;
			Symbol loc;
		} c;
		struct {
			Coordinate pt;
			int label;
			int ncalls;
			Symbol *callee;
		} f;
		int seg;
		struct {
			Node cse;
		} t;
	} u;
	Xsymbol x;
#ifdef Ysymbol
		Ysymbol y;
#endif

};
#define STDCALLATTRIBUTE	1
#define DLLIMPORTATTRIBUTE	100
#define DLLEXPORTATTRIBUTE	200

enum { CONSTANTS=1, LABELS, GLOBAL, PARAM, LOCAL };
struct tree {
	int op;
	Type type;
	Tree kids[2];
	Node node;
	struct {
		Value v;
		Symbol sym;

		Field field;
	} u;
	short Flags;
	unsigned nestedCall:1;
	int intrinsic;
	int intrinsicArg;
};
enum {
	AND=39<<4,
	NOT=40<<4,
	OR=41<<4,
	COND=42<<4,
	RIGHT=43<<4,
	FIELD=44<<4
};
struct type {
	int op;
	Type type;
	int align;
	int size;
	union {
		Symbol sym;
		struct {
			unsigned oldstyle:1;
			Type *proto;
			char isStdCall;
		} f;
	} u;
	Xtype x;
#ifdef Ytype		/* omit */
	Ytype y;	/* omit */
#endif			/* omit */
};
struct field {
	char *name;
	Type type;
	int offset;
	short bitsize;
	short lsb;
	char Flags;
	Field link;
};
#define CC_CDECL	0
#define CC_PASCAL	1
#define CC_STDCALL	2
#define CC_OPTLINK	3
 
extern int nodecount,FunctionNodes;
extern Symbol cfunc;
extern Symbol retv;
extern Tree (*optree[]) ARGS((int, Tree, Tree));

extern char *fname;
extern char kind[];
extern int errcnt;
extern int errlimit;
extern int wflag;
extern Events events;
extern float refinc;

extern unsigned char *cp;
extern unsigned char *limit;
extern int infd;
extern char *firstfile;
extern char *file;
extern char *line;
extern int lineno;
extern int t;
extern char *token;
extern Symbol tsym;
extern Coordinate src;
extern char *bp;
extern int Aflag;
extern int Pflag;
extern int Xflag;
extern Symbol YYnull;
extern Symbol YYcheck;
extern int glevel;
extern int xref;

extern int outfd;
extern int errfd;

extern int ncalled;
extern int npoints;

extern int needconst;
extern struct code codehead;
extern Code codelist;
extern Table stmtlabs;
extern float density;
extern Table constants;
extern Table externals;
extern Table globals;
extern Table identifiers;
extern Table labels;
extern Table types;
extern int level;

extern List loci, symbols;

extern List symbols;

extern Type chartype;
extern Type doubletype;
extern Type floattype;
extern Type inttype;
extern Type longdouble;
extern Type longtype;
extern Type longlongtype;
extern Type ulonglongtype;
extern Type shorttype;
extern Type signedchar;
extern Type unsignedchar;
extern Type unsignedlong;
extern Type unsignedshort;
extern Type unsignedtype;
extern Type voidptype;
extern Type voidtype;
extern int DefaultAlignment;
extern void  *allocate ARGS((unsigned long n, unsigned a));
extern void deallocate ARGS((unsigned a));
extern void *newarray
	ARGS((unsigned long m, unsigned long n, unsigned a));
extern void walk      ARGS((Tree e, int tlab, int flab));
extern Node listnodes ARGS((Tree e, int tlab, int flab));
extern Node newnode   ARGS((int op, Node left, Node right,
                      		Symbol p));
extern Tree cvtconst ARGS((Tree));
extern void printdag ARGS((Node, int));
extern Code compound ARGS((int, Swtch, int));
extern void defglobal ARGS((Symbol, int));
extern void finalize ARGS((void));
extern void program ARGS((void));

extern Tree addrof ARGS((Tree));
extern Tree asgn ARGS((Symbol, Tree));
extern Tree asgntree ARGS((int, Tree, Tree));
extern Type assign ARGS((Type, Tree));
extern Tree bittree ARGS((int, Tree, Tree));
extern Tree call ARGS((Tree, Type, Coordinate));
extern Tree calltree ARGS((Tree, Type, Tree, Symbol));
extern Tree condtree ARGS((Tree, Tree, Tree));
extern Tree consttree ARGS((unsigned int, Type));
extern Tree eqtree ARGS((int, Tree, Tree));
extern int iscallb ARGS((Tree));
extern Tree shtree ARGS((int, Tree, Tree));
extern void typeerror ARGS((int, Tree, Tree));

extern void test ARGS((int tok, char set[]));
extern void expect ARGS((int tok));
extern void skipto ARGS((int tok, char set[]));
extern void error (char *, ...);
extern int fatal ARGS((char *, char *, int));
extern void warning (char *, ...);

typedef void (*Apply) ARGS((void *, void *, void *));
extern void attach ARGS((Apply, void *, List *));

extern void apply ARGS((List, void *, void *));

extern Tree retype ARGS((Tree p, Type ty));
extern Tree rightkid ARGS((Tree p));
extern int hascall ARGS((Tree p));
extern Type binary ARGS((Type, Type));
extern Tree cast ARGS((Tree, Type));
extern Tree cond ARGS((Tree));
extern Tree expr0 ARGS((int));
extern Tree expr ARGS((int));
extern Tree expr1 ARGS((int));
extern Tree field ARGS((Tree, char *));
extern char *funcname ARGS((Tree));
extern Tree idtree ARGS((Symbol));
extern Tree incr ARGS((int, Tree, Tree));
extern Tree lvalue ARGS((Tree));
extern Tree nullcall ARGS((Type, Symbol, Tree, Tree));
extern Tree pointer ARGS((Tree));
extern Tree rvalue ARGS((Tree));
extern Tree value ARGS((Tree));

extern void defpointer ARGS((Symbol));
extern Type initializer ARGS((Type, int));
extern Tree structexp ARGS((Type, Symbol));
extern void swtoseg ARGS((int));

extern void inputInit ARGS((void));
extern void inputstring ARGS((char *));
extern void fillbuf ARGS((void));
extern void nextline ARGS((void));

extern int getchr ARGS((void));
extern int gettok ARGS((void));

extern void outs ARGS((char *));

extern void print (char *, ...);

extern void emitcode ARGS((void));
extern void gencode  ARGS((Symbol[], Symbol[]));
extern void fprint (int fd, char *fmt, ...);
extern void outflush ARGS((void));
extern char *stringf (char *, ...);
extern List append ARGS((void *x, List list));
extern int  length ARGS((List list));
extern void *ltov  ARGS((List *list, unsigned a));
extern Type typename ARGS((void));
extern void checklab ARGS((Symbol p, void *cl));
extern Type enumdcl ARGS((void));
extern int main ARGS((int, char *[]));
extern Symbol mkstr ARGS((char *));
extern Symbol mksymbol ARGS((int, char *,Type));

extern void outflush ARGS((void));
extern void outputInit ARGS((void));
extern void vfprint ARGS((int, char *, va_list));
extern void vprint ARGS((char *, va_list));

void profInit ARGS((char *));

extern int process ARGS((char *));
extern int findfunc ARGS((char *, char *));
extern int findcount ARGS((char *, int, int));

extern Tree constexpr ARGS((int));
extern int intexpr ARGS((int, int));
extern Tree simplify ARGS((int, Type, Tree, Tree));
extern int ispow2 ARGS((unsigned u));

extern void addlocal ARGS((Symbol));
extern Code code ARGS((int));
extern void definelab ARGS((int));
extern Code definept (Coordinate *,int);
extern void equatelab ARGS((Symbol, Symbol));
extern Node jump ARGS((int));
extern void retcode ARGS((Tree));
extern void statement ARGS((int, Swtch, int));

extern char * string ARGS((char *str));
extern char *stringn ARGS((char *str, int len));
extern char *stringd ARGS((int n));
extern void use ARGS((Symbol p, Coordinate src));
extern void locus ARGS((Table tp, Coordinate *cp));
extern Symbol constant ARGS((Type, Value));
extern void enterscope ARGS((void));
extern void exitscope ARGS((void));
extern Symbol findlabel ARGS((int));
extern Symbol findtype ARGS((Type));
extern void foreach ARGS((Table, int, void (*)(Symbol, void *), void *));
extern Symbol genident ARGS((int, Type, int));
extern int genlabel ARGS((int));
extern Symbol install ARGS((char *, Table *, int, int));
extern Symbol intconst ARGS((int));
extern Symbol lookup ARGS((char *, Table));
extern Symbol mkstr ARGS((char *));
extern Symbol mksymbol ARGS((int, char *, Type));
extern Symbol newtemp ARGS((int, int));
extern Table table ARGS((Table, int));
extern Symbol temporary ARGS((int, Type, int));
extern char *vtoa ARGS((Type, Value));

void traceInit ARGS((char *));

extern int nodeid ARGS((Tree));
extern char *opname ARGS((int));
extern int *printed ARGS((int));
extern void printtree ARGS((Tree, int));
extern Tree right ARGS((Tree, Tree));
extern Tree root ARGS((Tree));
extern Tree texpr ARGS((Tree (*)(int), int, int));
extern Tree tree ARGS((int, Type, Tree, Tree));

extern int hasproto ARGS((Type));
extern void outtype ARGS((Type));
extern void printdecl  ARGS((Symbol p, Type ty));
extern void printproto ARGS((Symbol p, Symbol args[]));
extern char *typestring ARGS((Type ty, char *id));
extern Field fieldref ARGS((char *name, Type ty));
extern Type array ARGS((Type, int, int));
extern Type atop ARGS((Type));
extern Type btot ARGS((int));
extern void checkfields ARGS((Type));
extern Type compose ARGS((Type, Type));
extern Type deref ARGS((Type));
extern int eqtype ARGS((Type, Type, int));
extern Field extends ARGS((Type, Type));
extern Field fieldlist ARGS((Type));
extern Type freturn ARGS((Type));
extern Type ftype ARGS((Type, Type));
extern Type func ARGS((Type, Type *, int));
extern Field newfield ARGS((char *, Type, Type));
extern Type newstruct ARGS((int, char *));
extern void printtype ARGS((Type, int));
extern Type promote ARGS((Type));
extern Type ptr ARGS((Type));
extern Type qual ARGS((int, Type));
extern void rmtypes ARGS((int));
extern int ttob ARGS((Type));
extern void typeInit ARGS((void));
extern int variadic ARGS((Type));

/* limits */
#ifdef __STDC__
#include <limits.h>
#include <float.h>
#else
/*
 * The magnitudes of the values below are greater than or equal to the minimum
 * permitted by the standard (see Appendix D) and are typical for byte-addressed
 * machines with 32-bit integers. These values are suitable for bootstrapping.
 */
#define CHAR_BIT        8
#define MB_LEN_MAX      1

#define UCHAR_MAX       0xff
#define USHRT_MAX       0xffff
#define UINT_MAX        0xffffffff
#define ULONG_MAX       0xffffffffL

#define CHAR_MAX        SCHAR_MAX
#define SCHAR_MAX       0x7f
#define SHRT_MAX        0x7fff
#define INT_MAX         0x7fffffff
#define LONG_MAX        0x7fffffffL

#define CHAR_MIN        SCHAR_MIN
#define SCHAR_MIN       (-SCHAR_MAX-1)
#define SHRT_MIN        (-SHRT_MAX-1)
#define INT_MIN         (-INT_MAX-1)
#define LONG_MIN        (-LONG_MAX-1)

#define FLT_MAX         1e37
#define DBL_MAX         1e37
#endif

extern void exit ARGS((int));
extern void free ARGS((void *));
extern void *malloc ARGS((unsigned));
extern void *memset ARGS((void *, int, unsigned));

extern double strtod (char *, char **);
extern void *memcpy (void *, void *, unsigned);
extern long strtol (char *, char **, int);
extern char *strchr (const char *, int);
extern char *strrchr(char *,int);
extern char *strcpy(char *,char *);
extern char *strcat(char *,char *);
extern int strcmp (const char *, const char *);
extern int memcmp(void *,void *,int);
extern unsigned strlen (char *);
extern int strncmp ARGS((const char *, const char *, unsigned));
extern char *strncpy ARGS((char *, const char *, unsigned));
extern int AsmInit(char *fname);
void AsmReadBuffer(char *buffer,int len);
int IsWithinSpecialSection(void);
int WriteCoffFile(void);
int CppInit(void);
int StartCpp(char *filename);
int ReadFromCpp(unsigned char *buf,int siz);
void ProcessPragmaPack(void);
void ProcessPragmaDensity(void);
int SetForestFlags(int f);
void DumpDefines(void);
void ResetExceptions(void);
void DumpDefinedFunctions(void);
void ProcessSection(void);
void ProcessOptimize(void);

extern int warningCount;
extern int OptimizeFlag;
extern int trapuv;

#pragma warning(disable:4100)
#pragma warning(disable:4244)
extern int FunctionHasCalls;
int SendToOptimizer(void);
void CheckStaticUses(void);
#define PEEPHOLE
extern FILE *xrefFile;
extern void AddToFileTable(char *);
extern int memused;
typedef struct tagfnInfo {
	unsigned char hasCalls;
	unsigned char hasDiv;
	unsigned char hasBlockMove;
	unsigned char hasFloatingPoint;
	unsigned char leafFunction;
	unsigned char hasRegisterVars;
	unsigned char NestedCalls;
	unsigned char mmxCalls;
	unsigned char memmove;
	unsigned char hasgotos;
	unsigned char SwappedRegs;
	unsigned char noFrame;
	unsigned short NrOfCalls;
	unsigned short pushedRegs;
	unsigned short FnNrOfLines;
	unsigned short unused;
	Code cp;
	List CalledFunctionsList;
	void *CalledFunctions;
} FunctionDescriptor;

extern FunctionDescriptor FunctionInfo;
void SetRegistersMasks(void);
int BuildBasicBlocks(void);
int GetFileNumber(char *fname);
void AnalyzeSecondPass(void);
void SetupRegisterVariables(void);
int GetType(Symbol p);
int ChangeBlock(unsigned char *buffer,int len);
void linearize(Node p,Node next);
#define INDEXPTR 613
#define BOOLEANVAL 613
extern int GenerateAsm;
int IsIntrinsic(char *name);
void IntrinsicArg(Node kid,int n);
void Intrinsic(Node p);
void InstallIntrinsics(void);
Symbol AssignIntrinsicArg(Node p);
extern int IntermediateLanguageFile;
extern FILE *ilFile;
extern void ildumpcover(Node p,int nt,int in);
extern int nrOfIntrinsicArgs(int idx);
extern int mmx;
extern int StatementCount;
void ExtendDomain(int lev,int start);
void IncrementReferences(Symbol sym);
void Initreferences(Symbol sym);
extern char *StrTab[];
int GetConstantSymbolsLength(void);
void EmitDefinesInfo(void);
void BuildExportTable(void);
void RestoreGlevelStack(void);
void AddExport(char *name);
extern int hasAllocA;



⌨️ 快捷键说明

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