p700.c

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 2,387 行 · 第 1/3 页

C
2,387
字号
struct _iobuf *  freopen(const char*, const char*, struct _iobuf *);int    fscanf(struct _iobuf *, const char* ...);int    fseek(struct _iobuf *, long, int);long   ftell(struct _iobuf  *);int fwrite(const void*, int, int, struct _iobuf *);char*  gets(char*);int    getw(struct _iobuf *);int    pclose(struct _iobuf *);void   perror(const char*);struct _iobuf *  popen(const char*, const char*);int    printf(const char* ...);int    puts(const char*);int    putw(int, struct _iobuf *);int    rewind(struct _iobuf *);int    scanf(const char* ...);int    setbuf(struct _iobuf *, char*);int    setbuffer(struct _iobuf *, char*, int);int    setlinebuf(struct _iobuf *);int    setvbuf(struct _iobuf *, char*, int, int);int    sscanf(char*, const char* ...);struct _iobuf *  tmpfile();int    ungetc(int, struct _iobuf *);int    vfprintf(struct _iobuf *, const char*, ...);int    vprintf(const char*, ... );int  sprintf(char*, const char*, ...);char*  vsprintf(char*, const char*, ...);}//# 7 "/giga/hgs/lib/g++-include/time.h" 2//# 1 "/giga/hgs/lib/g++-include/sys/types.h" 1//# 1 "/giga/hgs/lib/g++-include/stddef.h" 1extern "C" {//# 1 "/giga/hgs/lib/gcc/sun4/cygnus-1.96/include/stddef.h" 1//# 94 "/giga/hgs/lib/gcc/sun4/cygnus-1.96/include/stddef.h"//# 3 "/giga/hgs/lib/g++-include/stddef.h" 2}//# 73 "/giga/hgs/lib/g++-include/stddef.h"//# 3 "/giga/hgs/lib/g++-include/sys/types.h" 2extern "C"{//# 1 "/usr/include/sys/types.h" 1//# 115 "/usr/include/sys/types.h"//# 35 "/giga/hgs/lib/g++-include/sys/types.h" 2}//# 9 "/giga/hgs/lib/g++-include/time.h" 2extern "C" {//# 42 "/giga/hgs/lib/g++-include/time.h"//# 1 "/usr/include/time.h" 1//# 1 "/usr/include/sys/stdtypes.h" 1//# 32 "/usr/include/sys/stdtypes.h"//# 6 "/usr/include/time.h" 2struct	tm {	int	tm_sec;	int	tm_min;	int	tm_hour;	int	tm_mday;	int	tm_mon;	int	tm_year;	int	tm_wday;	int	tm_yday;	int	tm_isdst;	char	*tm_zone;	long	tm_gmtoff;};extern	struct tm *c_proto_gmtime (), *c_proto_localtime ();extern	char *c_proto_asctime (), *c_proto_ctime ();extern	void c_proto_tzset (), c_proto_tzsetwall ();extern  int dysize(int);extern  time_t timelocal(), timegm();//# 49 "/giga/hgs/lib/g++-include/time.h" 2//# 1 "/usr/include/sys/times.h" 1//# 1 "/giga/hgs/lib/g++-include/sys/types.h" 1//# 1 "/giga/hgs/lib/g++-include/stddef.h" 1extern "C" {//# 1 "/giga/hgs/lib/gcc/sun4/cygnus-1.96/include/stddef.h" 1//# 94 "/giga/hgs/lib/gcc/sun4/cygnus-1.96/include/stddef.h"//# 3 "/giga/hgs/lib/g++-include/stddef.h" 2}//# 73 "/giga/hgs/lib/g++-include/stddef.h"//# 3 "/giga/hgs/lib/g++-include/sys/types.h" 2extern "C"{//# 1 "/usr/include/sys/types.h" 1//# 115 "/usr/include/sys/types.h"//# 35 "/giga/hgs/lib/g++-include/sys/types.h" 2}//# 10 "/usr/include/sys/times.h" 2struct tms {	clock_t	tms_utime;	clock_t	tms_stime;	clock_t	tms_cutime;	clock_t	tms_cstime;};clock_t times(tms * );//# 51 "/giga/hgs/lib/g++-include/time.h" 2extern struct tm* localtime(long*);extern struct tm* gmtime(long*);extern char* ctime(long*);extern char* asctime(struct tm*);extern void tzset();extern void tzsetwall();extern long times(struct tms*);//# 97 "/giga/hgs/lib/g++-include/time.h"extern char* timezone(int, int);extern int getitimer(int, struct itimerval*);extern int setitimer(int, struct itimerval*, struct itimerval*);extern int gettimeofday(struct timeval*, struct timezone*);extern int settimeofday(struct timeval*, struct timezone*);extern int stime(long*);int       dysize(int);long      clock(void);long      time(long*);unsigned  ualarm(unsigned, unsigned);unsigned  usleep(unsigned);int       profil(char*, int, int, int);}//# 1 "/giga/hgs/lib/g++-include/sys/times.h" 2//# 311 "../../../../libg++/etc/benchmarks/dhrystone.cc" 2typedef enum	{Ident1, Ident2, Ident3, Ident4, Ident5} Enumeration;typedef Int	OneToThirty;typedef Int	OneToFifty;typedef Char	CapitalLetter;typedef Char	String30[31];typedef Int	Array1Dim[51];typedef Int	Array2Dim[51][51];struct	Record{	struct Record		*PtrComp;	Enumeration		Discr;	Enumeration		EnumComp;	OneToFifty		IntComp;	String30		StringComp;};typedef struct Record 	RecordType;typedef RecordType *	RecordPtr;typedef int		boolean;extern "C" {extern int printf(const char* ...);extern void exit(int);}void Proc0();void Proc1(RecordPtr PtrParIn);void Proc2(OneToFifty	*IntParIO);void Proc3(RecordPtr	*PtrParOut);void Proc4();void Proc5();boolean Func3(Enumeration	EnumParIn);void Proc6(  Enumeration	EnumParIn,   Enumeration	*EnumParOut);void Proc7(OneToFifty IntParI1, OneToFifty IntParI2, OneToFifty *IntParOut);void Proc8(Array1Dim	Array1Par,      Array2Dim	Array2Par,      OneToFifty IntParI1,      OneToFifty IntParI2);Enumeration Func1(CapitalLetter	CharPar1, CapitalLetter	CharPar2);boolean Func2(String30	StrParI1, String30	StrParI2);boolean Func3(Enumeration	EnumParIn);void mystrcpy(String30 s, char* t){  for (; *t != '\0'; ++s, ++t) *s = *t;  *s = '\0';}char mystrcmp(String30 s, String30 t){  for (; *s == *t; ++s, ++t) if (*s == '\0') return 0;  return char(*s - *t);}main(){	Proc0();	exit(0);}Int		IntGlob;boolean		BoolGlob;char		Char1Glob;char		Char2Glob;Array1Dim	Array1Glob;Array2Dim	Array2Glob;RecordPtr	PtrGlb;RecordPtr	PtrGlbNext;void Proc0(){	OneToFifty		IntLoc1;	  OneToFifty		IntLoc2;	OneToFifty		IntLoc3;	  char		CharLoc;	  char		CharIndex;	Enumeration	 	EnumLoc;	String30		String1Loc;	String30		String2Loc;//# 445 "../../../../libg++/etc/benchmarks/dhrystone.cc"	time_t			starttime;	time_t			benchtime;	time_t			nulltime;	struct tms		Tms;	register unsigned int	i;	times(&Tms); starttime = Tms.tms_utime;	for (i = 0; i < 500000		; ++i);	times(&Tms);	nulltime = Tms.tms_utime - starttime;	PtrGlbNext = new Record;	PtrGlb = new Record;	PtrGlb->PtrComp = PtrGlbNext;	PtrGlb->Discr = Ident1;	PtrGlb->EnumComp = Ident3;	PtrGlb->IntComp = 40;	mystrcpy(PtrGlb->StringComp, "DHRYSTONE PROGRAM, SOME STRING");	mystrcpy(String1Loc, "JUST INITIALIZED TO SOME JUNK.");	times(&Tms); starttime = Tms.tms_utime;	for (i = 0; i < 500000		; ++i)	{		Proc5();		Proc4();		IntLoc1 = 2;		IntLoc2 = 3;		mystrcpy(String2Loc, "DHRYSTONE PROGRAM, 2'ND STRING");		EnumLoc = Ident2;		BoolGlob = ! Func2(String1Loc, String2Loc);		while (IntLoc1 < IntLoc2)		{			IntLoc3 = 5 * IntLoc1 - IntLoc2;			Proc7(IntLoc1, IntLoc2, &IntLoc3);			++IntLoc1;		}		Proc8(Array1Glob, Array2Glob, IntLoc1, IntLoc3);		Proc1(PtrGlb);		for (CharIndex = 'A'; CharIndex <= Char2Glob; ++CharIndex)			if (EnumLoc == Func1(CharIndex, 'C'))				Proc6(Ident1, &EnumLoc);		IntLoc3 = IntLoc2 * IntLoc1;		IntLoc2 = IntLoc3 / IntLoc1;		IntLoc2 = 7 * (IntLoc3 - IntLoc2) - IntLoc1;		Proc2(&IntLoc1);	}	times(&Tms);	benchtime = Tms.tms_utime - starttime - nulltime;	printf("Dhrystone time for %ld passes = %ld\n",		(long) 500000		, benchtime/60		);	printf("This machine benchmarks at %ld dhrystones/second\n",		((long) 500000		) * 60		 / benchtime);}void Proc1(RecordPtr PtrParIn){	(*(PtrParIn->PtrComp))  =  *PtrGlb ;	PtrParIn->IntComp = 5;	(*(PtrParIn->PtrComp)) .IntComp = PtrParIn->IntComp;	(*(PtrParIn->PtrComp)) .PtrComp = PtrParIn->PtrComp;	Proc3(&((*(PtrParIn->PtrComp)) .PtrComp));	if ((*(PtrParIn->PtrComp)) .Discr == Ident1)	{		(*(PtrParIn->PtrComp)) .IntComp = 6;		Proc6(PtrParIn->EnumComp, &(*(PtrParIn->PtrComp)) .EnumComp);		(*(PtrParIn->PtrComp)) .PtrComp = PtrGlb->PtrComp;		Proc7((*(PtrParIn->PtrComp)) .IntComp, 10, &(*(PtrParIn->PtrComp)) .IntComp);	}	else		*PtrParIn =  (*(PtrParIn->PtrComp))  ;}void Proc2(OneToFifty	*IntParIO){	  OneToFifty		IntLoc;	  Enumeration		EnumLoc;	IntLoc = *IntParIO + 10;	for(;;)	{		if (Char1Glob == 'A')		{			--IntLoc;			*IntParIO = IntLoc - IntGlob;			EnumLoc = Ident1;		}		if (EnumLoc == Ident1)			break;	}}void Proc3(RecordPtr	*PtrParOut){	if (PtrGlb != 0 )		*PtrParOut = PtrGlb->PtrComp;	else		IntGlob = 100;	Proc7(10, IntGlob, &PtrGlb->IntComp);}void Proc4(){	  boolean	BoolLoc;	BoolLoc = Char1Glob == 'A';	BoolLoc |= BoolGlob;	Char2Glob = 'B';}void Proc5(){	Char1Glob = 'A';	BoolGlob = 	0 ;}void Proc6(  Enumeration	EnumParIn,   Enumeration	*EnumParOut){	*EnumParOut = EnumParIn;	if (! Func3(EnumParIn) )		*EnumParOut = Ident4;	switch (EnumParIn)	{	case Ident1:	*EnumParOut = Ident1; break;	case Ident2:	if (IntGlob > 100) *EnumParOut = Ident1;			else *EnumParOut = Ident4;			break;	case Ident3:	*EnumParOut = Ident2; break;	case Ident4:	break;	case Ident5:	*EnumParOut = Ident3;	}}void Proc7(OneToFifty IntParI1, OneToFifty IntParI2, OneToFifty *IntParOut){	  OneToFifty	IntLoc;	IntLoc = IntParI1 + 2;	*IntParOut = IntParI2 + IntLoc;}void Proc8(Array1Dim	Array1Par,      Array2Dim	Array2Par,      OneToFifty IntParI1,      OneToFifty IntParI2){	  OneToFifty	IntLoc;	  OneToFifty	IntIndex;	IntLoc = IntParI1 + 5;	Array1Par[IntLoc] = IntParI2;	Array1Par[IntLoc+1] = Array1Par[IntLoc];	Array1Par[IntLoc+30] = IntLoc;	for (IntIndex = IntLoc; IntIndex <= (IntLoc+1); ++IntIndex)		Array2Par[IntLoc][IntIndex] = IntLoc;	++Array2Par[IntLoc][IntLoc-1];	Array2Par[IntLoc+20][IntLoc] = Array1Par[IntLoc];	IntGlob = 5;}Enumeration Func1(CapitalLetter	CharPar1, CapitalLetter	CharPar2){	  CapitalLetter	CharLoc1;	  CapitalLetter	CharLoc2;	CharLoc1 = CharPar1;	CharLoc2 = CharLoc1;	if (CharLoc2 != CharPar2)		return (Ident1);	else		return (Ident2);}boolean Func2(String30	StrParI1, String30	StrParI2){	  OneToThirty		IntLoc;	  CapitalLetter	CharLoc;	IntLoc = 1;	while (IntLoc <= 1)		if (Func1(StrParI1[IntLoc], StrParI2[IntLoc+1]) == Ident1)		{			CharLoc = 'A';			++IntLoc;		}	if (CharLoc >= 'W' && CharLoc <= 'Z')		IntLoc = 7;	if (CharLoc == 'X')		return(	1 );	else	{		if (mystrcmp(StrParI1, StrParI2) > 0)		{			IntLoc += 7;			return (	1 );		}		else			return (	0 );	}}boolean Func3(Enumeration	EnumParIn){	  Enumeration	EnumLoc;	EnumLoc = EnumParIn;	if (EnumLoc == Ident3) return (	1 );	return (	0 );}

⌨️ 快捷键说明

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