Î.24SEP93 DHRY C S71DHRY COMU:ØŒDHRY280 COM�8V`DRHY FORÇÿ ÿ /* EVERBODY: Please read "APOLOGY" below. -rick 01/06/85 * See introduction in net.arch, or net.micro * * "DHRYSTONE" Benchmark Program * * Version: C/1.1, 12/01/84 * * Date: PROGRAM updated 01/06/86, RESULTS updated 03/31/86 * * Author: Reinhold P. Weicker, CACM Vol 27, No 10, 10/84 pg. 1013 * Translated from ADA by Rick Richardson * Every method to preserve ADA-likeness has been used, * at the expense of C-ness. * * Compile: cc -O dry.c -o drynr : No registers * cc -O -DREG=register dry.c -o dryr : Registers * * Defines: Defines are provided for old C compiler's * which don't have enums, and can't assign structures. * The time(2) function is library dependant; Most * return the time in seconds, but beware of some, like * Aztec C, which return other units. * The LOOPS define is initially set for 50000 loops. * If you have a machine with large integers and is * very fast, please change this number to 500000 to * get better accuracy. Please select the way to * measure the execution time using the TIME define. * For single user machines, time(2) is adequate. For * multi-user machines where you cannot get single-user * access, use the times(2) function. If you have * neither, use a stopwatch in the dead of night. * Use a "printf" at the point marked "start timer" * to begin your timings. DO NOT use the UNIX "time(1)" * command, as this will measure the total time to * run this program, which will (erroneously) include * the time to malloc(3) storage and to compute the * time it takes to do nothing. * * The following program contains statements of a high-level programming * language (C) in a distribution considered representative: * * assignments 53% * control statements 32% * procedure, function calls 15% * * 100 statements are dynamically executed. The program is balanced with * respect to the three aspects: * - statement type * - operand type (for simple data types) * - operand access * operand global, local, parameter, or constant. * * The combination of these three aspects is balanced only approximately. * * The program does not compute anything meaningfull, but it is * syntactically and semantically correct. * */ #include /* Accuracy of timings and human fatigue controlled by next two lines */ #define LOOPS 65500 /* Use this for slow or 16 bit machines */ /* #define LOOPS 500000 */ /* Use this for faster machines */ /* Compiler dependent options */ /* #define NOENUM */ /* Define if compiler has no enum's */ /* #define NOSTRUCTASSIGN */ /* Define if compiler can't assign structures */ /* define only one of the next two defines */ /* #define TIMES */ /* Use times(2) time function */ #define TIME /* Use time(2) time function */ /* define the granularity of your times(2) function (when used) */ /* #define HZ 60 */ /* times(2) returns 1/60 second (most) */ /* #define HZ 100 */ /* times(2) returns 1/100 second (WECo) */ /* for compatibility with goofed up version */ /*#define GOOF */ /* Define if you want the goofed up version */ #ifdef GOOF char Version[] = "1.0"; #else char Version[] = "1.1"; #endif #ifdef NOSTRUCTASSIGN #define structassign(d, s) bcopy(&(s), &(d), sizeof(d)) #else #define structassign(d, s) d = s #endif #ifdef NOENUM #define Ident1 1 #define Ident2 2 #define Ident3 3 #define Ident4 4 #define Ident5 5 typedef int Enumeration; #else typedef enum {Ident1, Ident2, Ident3, Ident4, Ident5} Enumeration; #endif 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; #define TRUE 1 #define FALSE 0 #ifndef REG #define REG register #endif extern Enumeration Func1(); extern boolean Func2(); #ifdef TIMES #include #include #endif main() { Proc0(); exit(0); } /* * Package 1 */ int IntGlob; boolean BoolGlob; char Char1Glob; char Char2Glob; Array1Dim Array1Glob; Array2Dim Array2Glob; RecordPtr PtrGlb; RecordPtr PGlbNext; Proc0() { OneToFifty IntLoc1; REG OneToFifty IntLoc2; OneToFifty IntLoc3; REG char CharLoc; REG char CharIndex; Enumeration EnumLoc; String30 String1Loc; String30 String2Loc; extern char *malloc(); unsigned int i; #ifdef TIME long time(); long starttime; long benchtime; long nulltime; starttime = time( (long *) 0); for (i = 0; i < LOOPS; ++i); nulltime = time( (long *) 0) - starttime; /* Computes o'head of loop */ #endif #ifdef TIMES time_t starttime; time_t benchtime; time_t nulltime; struct tms tms; unsigned int i; times(&tms); starttime = tms.tms_utime; for (i = 0; i < LOOPS; ++i); times(&tms); nulltime = tms.tms_utime - starttime; /* Computes overhead of looping */ #endif PGlbNext = (RecordPtr) malloc(sizeof(RecordType)); PtrGlb = (RecordPtr) malloc(sizeof(RecordType)); PtrGlb->PtrComp = PGlbNext; PtrGlb->Discr = Ident1; PtrGlb->EnumComp = Ident3; PtrGlb->IntComp = 40; strcpy(PtrGlb->StringComp, "DHRYSTONE PROGRAM, SOME STRING"); #ifndef GOOF strcpy(String1Loc, "DHRYSTONE PROGRAM, 1'ST STRING"); /*GOOF*/ #endif Array2Glob[8][7] = 10; /* Was missing in published program */ /***************** -- Start Timer -- *****************/ #ifdef TIME starttime = time( (long *) 0); #endif #ifdef TIMES times(&tms); starttime = tms.tms_utime; #endif for (i = 0; i < LOOPS; ++i) { Proc5(); Proc4(); IntLoc1 = 2; IntLoc2 = 3; strcpy(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); } /***************** -- Stop Timer -- *****************/ #ifdef TIME benchtime = time( (long *) 0) - starttime - nulltime; printf("Dhrystone(%s) time for %ld passes = %ld\n", Version, (long) LOOPS, benchtime); printf("This machine benchmarks at %ld dhrystones/second\n", ((long) LOOPS) / benchtime); #endif #ifdef TIMES times(&tms); benchtime = tms.tms_utime - starttime - nulltime; printf("Dhrystone(%s) time for %ld passes = %ld\n", Version, (long) LOOPS, benchtime/HZ); printf("This machine benchmarks at %ld dhrystones/second\n", ((long) LOOPS) * HZ / benchtime); #endif } Proc1(PtrParIn) REG RecordPtr PtrParIn; { #define NextRecord (*(PtrParIn->PtrComp)) structassign(NextRecord, *PtrGlb); PtrParIn->IntComp = 5; NextRecord.IntComp = PtrParIn->IntComp; NextRecord.PtrComp = PtrParIn->PtrComp; Proc3(NextRecord.PtrComp); if (NextRecord.Discr == Ident1) { NextRecord.IntComp = 6; Proc6(PtrParIn->EnumComp, &NextRecord.EnumComp); NextRecord.PtrComp = PtrGlb->PtrComp; Proc7(NextRecord.IntComp, 10, &NextRecord.IntComp); } else structassign(*PtrParIn, NextRecord); #undef NextRecord } Proc2(IntParIO) OneToFifty *IntParIO; { REG OneToFifty IntLoc; REG Enumeration EnumLoc; IntLoc = *IntParIO + 10; for(;;) { if (Char1Glob == 'A') { --IntLoc; *IntParIO = IntLoc - IntGlob; EnumLoc = Ident1; } if (EnumLoc == Ident1) break; } } Proc3(PtrParOut) RecordPtr *PtrParOut; { if (PtrGlb != NULL) *PtrParOut = PtrGlb->PtrComp; else IntGlob = 100; Proc7(10, IntGlob, &PtrGlb->IntComp); } Proc4() { REG boolean BoolLoc; BoolLoc = Char1Glob == 'A'; BoolLoc |= BoolGlob; Char2Glob = 'B'; } Proc5() { Char1Glob = 'A'; BoolGlob = FALSE; } extern boolean Func3(); Proc6(EnumParIn, EnumParOut) REG Enumeration EnumParIn; REG 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; } } Proc7(IntParI1, IntParI2, IntParOut) OneToFifty IntParI1; OneToFifty IntParI2; OneToFifty *IntParOut; { REG OneToFifty IntLoc; IntLoc = IntParI1 + 2; *IntParOut = IntParI2 + IntLoc; } Proc8(Array1Par, Array2Par, IntParI1, IntParI2) Array1Dim Array1Par; Array2Dim Array2Par; OneToFifty IntParI1; OneToFifty IntParI2; { REG OneToFifty IntLoc; REG 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(CharPar1, CharPar2) CapitalLetter CharPar1; CapitalLetter CharPar2; { REG CapitalLetter CharLoc1; REG CapitalLetter CharLoc2; CharLoc1 = CharPar1; CharLoc2 = CharLoc1; if (CharLoc2 != CharPar2) return (Ident1); else return (Ident2); } boolean Func2(StrParI1, StrParI2) String30 StrParI1; String30 StrParI2; { REG OneToThirty IntLoc; REG 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(TRUE); else { if (strcmp(StrParI1, StrParI2) > 0) { IntLoc += 7; return (TRUE); } else return (FALSE); } } boolean Func3(EnumParIn) REG Enumeration EnumParIn; { REG Enumeration EnumLoc; EnumLoc = EnumParIn; if (EnumLoc == Ident3) return (TRUE); return (FALSE); } *ùÕ·!³4íRMD kb6í°!îå!€N# 6!�åÍ‚ ÁÁå*ž4åÍ=åÍo ÃÍI!åÍo ÁÉÍÚ«ÿ!åÍïÁÝs³Ýr´ÝuµÝt¶Ý6·Ý6¸ Ýn·Ýf¸#Ýu·Ýt¸ÜÿÝn·Ýf¸Í±8åÝ^³ÝV´ÝnµÝf¶åÕ!åÍïÁÍÀÝs«Ýr¬Ýu­Ýt®!%åÍÐ")2!%ãÍÐÁ",2í[)2s#rý*,2ý6ý6ý6(ý6!óåí[,2!åͦÁ!ãÝåÑ!ØÿåͦÁ! "!!ãÍïÁÝs³Ýr´ÝuµÝt¶Ý6·Ý6¸ÃÍ^Í1Ý6þÝ6ÿÝ6üÝ6ý!1åÝåÑ!¹ÿåͦÁÝ6÷ÝåÑ!¹ÿãÝåÑ!ØÿåÍ+ÁÁ}´!(+"ÕDÝnþÝfÿÍ×Ý^üÝVý·íRÝuúÝtûÝåÑ!úÿåÝnüÝfýåÝnþÝfÿåÍÏÁÁÁÝnþÝfÿ#ÝuþÝtÿÝ^üÝVýÝnþÝfÿͱúnÝnúÝfûåÝnþÝfÿå!×å!12åÍöÁÁÁ*,2ãÍÁÝ6øA+!CåÝ~øoŸgåÍ ÁÁ}ݾ÷ ÝåÑ!÷ÿå!åÍjÁÁÝ4øÝFø:.2Í�òîÝ^þÝVÿÝnüÝfýÍ×ÝuúÝtûÝ^þÝVÿÍôÝuüÝtýëÝnúÝfû·íRÍ×Ý^þÝVÿ·íRÝuüÝtýÝåá++åͳÁÝn·Ýf¸#Ýu·Ýt¸ÜÿÝn·Ýf¸Í±Ú"Ý^«ÝV¬Ýn­Ýf®åÕÝ^³ÝV´ÝnµÝf¶åÕ!åÍïÁÍÀÍÀÝs¯Ýr°Ýu±Ýt²åÕÜÿ!åÕ!ïå!PåÍ ! 9ùÝ^¯ÝV°Ýn±Ýf²åÕÜÿ!ÍóåÕ!yåÍ ÃÒÍÆÝnÝfåýá*,2ý^ýVå%í°áý6ý6ý^ýVýnýf####s#rý^ýV+++++s#rkbN#FÅÍýÁýnýf##~· D##s#r++åýn&åÍjÁÁ*,2N#Fýnýfq#p###å! åýnýf####N#FÅÍÏÁÁÁÃÒýnýfýåÑå%í°áÃÒÍÆååÝnÝfN#F! ÝuþÝtÿ:+2þA "ÝnþÝfÿ+ÝuþÝtÿí[/2·íRëÝnÝfs#rÝ6ýÝ~ý· ÑÃÒÍÆ*,2}´(N#FÝnÝfq#p!d"/2*,2####å*/2å! åÍÏÃÒÍÆå:+2þA!(+ÝuþÝtÿí[Õ}³o|²gÝuþÝtÿ>B2.2ÃÒ>A2+2!"ÕÉÍÆÝnÝf åýáÝ~ýwo&åÍïÁ}´ ý6Ý~·(!þ(þ('þÊÒþ(%ÃÒí[/2!dͱòºý6ÃÒý6ÃÒý6ÃÒý6ÃÒÍÆåÝnÝf##ÝuþÝtÿëÝnÝf ëÝn Ýf s#rÃÒÍÆååÝ^ ÝV !ÝuþÝtÿÝ^ÝV)Ý^ ÝV s#rÝ^ÝVÝnþÝfÿ)N#FÝnþÝfÿ#)q#pÝ^þÝVÿ!)Ý^ÝVÝ^þÝVÿs#rkbÝuüÝtý3ÝnüÝfý)åfÝnþÝfÿÍ×ÑÝ^ÝV Ý^þÝVÿs#rÝnüÝfý#ÝuüÝtýÝ^üÝVýÝnþÝfÿ#ͱò^ÝnþÝfÿ+)åfÝnþÝfÿÍ×ÑÝ^ÝV N#Fp+qÝ^ÝVÝnþÝfÿ)N#FÅÝnþÝfÿ)åÝ^þÝVÿ!fÍ×ÑÝ^ÝV Áq#p!"/2ÃÒÍÆåÝ~ÝwÿÝ~ÿÝwþÝ~þݾ(.ÃÒ.ÃÒÍÆååÝ6þÝ6ÿAÝ^ÝV ÝnþÝfÿ#~oŸgåÝ^ÝVÝnþÝfÿ~oŸgåÍ ÁÁ}· Ý6ýAÝnþÝfÿ#ÝuþÝtÿÝ^þÝVÿ!ͱò:WÝ~ýÍ�Ý~ýú°_ŸW!Zͱú­Ý6þÝ6ÿÝ~ýþX !ÃÒÝnÝf åÝnÝfåÍŒÁÁë!ͱòéÝnþÝfÿÝuþÝtÿË!ÃÒÍÆåÝ~ÝwÿÝ~ÿþ !ÃÒ!ÃÒÍÆÝåÑ!åÝnÝfå!ºåÍlÁÁÁÃÒÍÆ*š2åÝ~oŸgåÍ ÃÒÍÆÝnÝfåýáåÍ0Á}2—2ý#ý^!DËV ñýåáÃÒÍÚ÷ÿÝnÝf åýáÝnÝf"š2à Ý~ÿþ%( oŸgåÍ+Áà Ý6û Ý6úÝ6øÝ6ýÝ6÷ý~þ- ý#Ý4ýý~þ0!(+Ýuþý^!DËV(ýåÍ@Áåýá:—2Ýwúý~þ* Ýn Ýf ~##Ýu Ýt Ýwúý#ý~þ. 0ý#ý~þ* Ýn Ýf ~##Ýu Ýt Ýwùý#$ýåÍ@Áåýá:—2ÝwùÝ~þ· !Ýnú&Ýuùý~þl ý#Ý6÷ý~ý#Ýwÿ·ÊÒþDÊä þO("þXÊê þcÊ› þd(jþo(þsÊð þu( þx(_í Ý6ûÝ~ý·( Ý~úÝwýÝ6úÝ~ÿ_ŸW!DËF(Ý6÷!+åÝnû&åÝnøåÝnúåÝnùåÝ~÷þÊ» Ýn Ýf ^#V#~#foÃÔ Ý6ø¨Ý6û¢Ýn Ýf N#FíC˜2#Ýu Ýt i`}´ !«"˜2*˜2å͸ÁÝuüÝ~ù·(ÝFüÍ�0Ý~ùÝwüÝFúÝ~üÍ�0 Ý~úÝ–üÝwúÝ6úÝ~ý· &! åÍ+ÁÝ~úÝ5ú· ï*˜2~#"˜2oŸgåÍ+ÁÝ~üÝ5ü· æÝ~ý·Ê ! åÍ+ÁÝ~úÝ5ú· ïà Ýn Ýf ~##Ýu Ýt ÝwÿÝåá+"˜2Ý6üà Ý~ø·Ýn Ýf ^#V !zŸogåÕÍMÙ!9ùÙÝuúÝn÷&)ëÝn Ýf Ýu Ýt ! åÍ+ÁÝFýÝ5ýÝ~úÍ�8êý~ý#Ýwÿ·Â†ÃÒÑÁýãýËN(GýË~ yþ ÅÕýå! åÍ áÁÑÁýnýf}´(+ýuýtýnýfq#ýuýtýãÅÕi`ÉýãÅÕÃv ÿÿíÍÆÝnÝf åýáýËNÊ ý~ý¶ :ý6ý6!åÝåÑ!åýn&åÍÓ ÁÁÁ·íR Ýn&ÃÒýËî!ÿÿÃÒ!åýnýfåýn&åÍÓ ÁÁÁ·íR(ýËîý6ÿý6Ý~ýnýfw#ýuýt ýËîý6ý6ýËn(ž¨ÍÆåÝ6ÿý!²ýåÍB ÁýÝ~ÿÆÿÝwÿ· êÃÒÍÆÝnÝfåýáý~æ· !ÿÿÃÒýåÍ© Áý~æøýwý~ý¶(ýË^ ýnýfåÍS Áý6ý6ýn&åÍcÁÿÿ·íR(¹ýËn ³!ÃÒÍÆåÝnÝfåýáýËN(ý~ý¶(ý^ýV!·íRÝuþÝtÿ}´ !ÃÒÝnþÝfÿåýnýfåýn&åÍÓ ÁÁÁÝ^þÝVÿ·íR(ýËîý6ý6ýnýfýuýtýËn(·!ÿÿÃÒÍÆý*œ4ýåá}´( ýnýf"œ4 !åÍQÁåýáýåáÃÒÍÆÝnÝfåýá*œ4ýuýtý"œ4ÃÒÍÆÍ ÝnÝfåÍ ÃÒÃ… áÙáá:€<íDo&ÿ9ùÅ!€N Aë*+6þ  å þ ø¯+wëíCž4!òå!9ÙÕÕåÙÉÍÚyÿÝ~Í�8!ÿÿÃÒ*Ýn&Í×óåýáÝ6þÝn Ýf ÝuùÝtúý~(þÊ þÊ þ(qþ(%þ(<½ÍÝnÝf ~#ÝuÝt oŸgå!åÍuÁÁÝn Ýf +Ýu Ýt #}´ ÏÝnùÝfúÃÒÝ6þ'ÍÝnÝf ~#ÝuÝt oŸgÝuûÝtüåÝnþ&åÍuÁÁÝn Ýf +Ýu Ýt #}´ ǶÍO]ÝsýÃÊÍýn)&åÍcÁý~$æÝwþ_!€·íRÝuÿ]Ýn Ýf ͱ0Ý~ Ýwÿ€!åÕý^$ýV%ýn&ýf'ÍóåÕýåÑ!!åÍËÁÁÁÝ~ÿþ€ ÝnÝf å!åÍuÁÁ^ÝåÑ!yÿå!åÍuÁÝåÑ!yÿ6!ãÝåÑ!zÿåÝåÑ!yÿåÍÇÁÁÁýå!!åÍuÁÝnÿ&ãÝåÑÝnþ&yÿåÝnÝf åÍÇÁÁÁýå!"åÍuÁÁ}· IÝ^ÿÝnÝf ÝuÝt {!UåÕýåÑ!$ÍÝ^ÿÝn Ýf ·íRÝu Ýt ÝnýbåÍcÁÝ~ ݶ ªÝný&åÍcÁÝ^ ÝV ÝnùÝfú·íRÃÒÍÚ÷ÿ!ÝuûÝtüÝuÿÝuþÝuýÝåÑ!ûÿå!iåÍuÁÝuÿÝåÑ!ûÿãÍ‹ÁÝs÷ÝrøÝuùÝtúÝ~ݶÊÒåÕÝnÝfÑs#r#Áq#pÝ^÷ÝVøÝnùÝfúÃÒÍÆ Ýn&Ë<ËË<ËË<ËË<Ë}æo¯gÍ×ëÝ~æo&ÃÒÍÆååÝnÝfN#F!i ëzŸogÝsüÝrýÝuþÝtÿ!åÕÝåá++++Í ÝnÝf##~oŸgåÍZÁëzŸogåÕÝåá++++Í<!åÕÝåá++++Í ÝnÝf###~oŸgåÍZÁëzŸogåÕÝåá++++Í<!åÕÝåá++++Í ÝnÝf####~oŸgåÍZÁëzŸogåÕÝåá++++ÍÝ^üÝVýÝnþÝfÿÃÒÍÆåÝ~Í�8!ÿÿÃÒ*Ýn&Í×óåýáÍOÝuÿýn)&åÍcÁý~(þ(þ(! åÍ“Á¯o|æg}´(ý~(þ ýå!åÍuÁÁý6(Ýnÿ&åÍcÁ!ÃÒÍÆåÝnÝf·íR(!ÿÿÃÒ* 4ÝuþÝtÿÝnÝf " 4ÝnþÝfÿÃÒÍÆå* 4·íRÊÒ! åÍuÁ}·ÊÒ!åÍuÁ]Ýsÿ{þÂÒ* 4}´Ìo * 4ÍÙÃÒÍÆ ÿÝåÍÝáo&ÃÒÍÆÝ^ ÝåÍÝáÃÒÍÆÝ^ÝV ÝNÝåýåÍýáÝáoŸgÃÒÍÆÝ^ÝV ÝNÝåÍÝáÃÒÍÆåÝ6ÿÝnÿ&åÍcÁÝ4ÿÝ~ÿÍ�8éÃÒÍÆÝ~ÝnÝfw_ÝV Ýn Ýf ÍöÝnÝf#sÝ^ÝV Ýn Ýf ÍöÝnÝf##sÃÒÍ©áá"€ÃÍiÍ�ÃÍiÍ ÃÖ0Øþ ?ÉÁÑÕÅ!þ (úþ (öþ-(þ+ ·Í)8 )MD)) O íÀë!íRÉ^#V#N#FãÅãÁÙáÁÑãÅãÁãåÅÕÙÅÉãÁp+q+r+sÅáÉÙáÙÁë ëÁíJÙåÙÉÕ_¨ú§{˜ÑÉ{æ€W{˜z<ÑÉ|ªú¹íRÉ|æ€íR<ÉÙáÙÁë·íBëÁíBÙåÙÉÍÆå*¦4}´ !©4"¦4"¬4!¦4"©4"¤4!¨4ËÆ!«4ËÆÝ^ÝV!ÍïÍ×ÝuÝtý*¤4!"¢4ýËF¸ÝnþÝfÿN#FýqýpýnýfÝuþÝtÿ##ËF(ßýåÑÝnÝfëÝnþÝfÿͱýå8[ÑÝnÝfýåÑͱýå8IÑÝnÝf"¤4Ý^þÝVÿͱ*¤40®4åí°áý^ýV*¤4s#r#6++ýuýtýËÆýåá###ÃÒýåáÝuþÝtÿýnýfåýáåÑÝnþÝfÿͱÚí[¬4ÝnþÝfÿ·íR ¦4ýåá·íR(!ÃÒ*¢4#"¢4ë!ͱÒÝ^ÝV!ÿÍïÿÍ×"¢4!åÍQÁÝuþÝtÿí[¢4Ý^þÝVÿͱ8²*¢4åÍQÁÝuþÝtÿÿÿ·íR(œÝ^þÝVÿ*¬4s#r##·íR*¬4##(ËÆˆí[¢4ÝnþÝfÿ+++ëÝnþÝfÿs#ríS¬4¦4*¬4s#r#ËÆÝnþÝfÿ##ˆÃÍÆÝnÝf+++åýáý"¤4ýˆÃÒÍÚúÿÝnÝfåýáÝnÝf ##ÍïÝuúÝtûýåÑýnýýfþ·íRÍôÝuüÝtýýËÿF(ýåÍ©ÁÝnÝf åÍÐÁÝuþÝtÿ}´(ýåÑ·íR ÝnþÝfÿÃÒÝ^þÝVÿkb+++~#fo·íRÍôÝuúÝtûÝ^üÝVýͱ0 ÝnúÝfûÝuüÝtýÝnüÝfýÍ×åÝnþÝfÿåýåÍÇÁÁÁýåÑÝnþÝfÿͱ0˜ÝnúÝfûÍ×Ý^þÝVÿëýåáͱÒ&ÝnúÝfûÍ×Ý^þÝVÿýåÑ·íRÍôÍ×Ý^þÝVÿë!®4åí°áÃ&ÍôëÉÍïëɯë |ª|ÍAëÍA|µÈå)8z¼8 {½8ñîáëå!ã|º8 }»8íRã?íjË:ËãéÑëüDë·üDëÉË|ÈDM!·íBÉÍÚáÿÝ~ _ŸW!ͱòfÝ6 Ý~·(0ÝË ~(*Ý^ÝVÝnÝf åÕ!Á·íBÁë!íBÝsÝrÝuÝt Ý6Ý~ · Ý~ݶݶݶ Ý4 ÝåÑ!ÿÿåýá>Ý~!U_åÕÝ^ÝVÝnÝf Í4ëÄnÿÿýýuÝ~!U_åÕÝåÑ!ÍÝ5 Ý~ݶݶݶ ´Ý~ _ŸW!ͱúÃÝåÑ!ÿÿýåÑ·íRÝ^Ýu ÝuÿÝ^ Ýnÿbͱ0Ý~ Ýwÿ! åÝnÝfÍÙÁÝF Ý5 Ý~ Í�úLÝ~·('!-åÝnÝfÍÙÁÝ5 ý~ý#oŸgåÝnÝfÍÙÁÝ~ Ý5 · ãÝnÿ&ÃÒÁÙÁÑÙëãëÙÅáãÙÅÉÑͧåýãýfýnÙåýfýnÙÉÍVÙëÙëÍVëÙëÙÃkͶÍöýsýrýuýtýáÉͧ|ªÍÍÅÙáYPúGÉͧÍkÅÙáYPÉͶÍ Êͧ|ÍÍåÙÑë·úGÉͶͰͧÍkåÙÑëÉͶÍ7�å!·íRëÁ!íBÉË|ÈÙMD!·íBÙMD!íBÉ{²Ù³²ÙÈ>åÙå·íRÙíRÙáÙá8Ù<ë)ëÙëíjëËz(ãåÙå·íRÙíRÙ0áÙáÙ3333?ËËÙËËË:ËÙËËÙ= ÓÉáÙáÑÁx±(í°ÅÕåÙé{Jë!Íêë)ýëyË?0ë)ëÈõÉx·Èþ!8 Ë,ËËËöÉëãÙÑÁÙÁå!Ù!yHÍ2yÍ2ÙyÙÍ2ÙxÙÍ2åÙÑÉË?0ÙíZÙë)ëÙëíjëÙìÉáÑíS±4ÕéÁÑÕÅ*±4}´ !³4"±48  8ír8!ÿÿÉ*±4å"±4áÉ*±4€ ír!Ø+ÉÁÑáåÕž #· ÷!É!Ð++ÉÁÑáåÕÅKB~#· ùi`ÉáÑÕå!·È#ùáýåÝåÝ!Ý9éÝùÝáýáÉéáýåÝåÝ!Ý9^#V#ë9ùëé1.1DHRYSTONE PROGRAM, SOME STRINGDHRYSTONE PROGRAM, 1'ST STRINGDHRYSTONE PROGRAM, 2'ND STRINGDhrystone(%s) time for %ld passes = %ld This machine benchmarks at %ld dhrystones/second (null)œ2œ2      AAAAAABBBBBB 0123456789ABCDEF*ù ·!~3íRMD kb6í°!¹å!€N# 6!�åÍ” ÁÁå*i3åÍ=åÍ� ÃÍI!åÍ� ÁÉÍ¥«ÿ!åÍÁÝí³Ýí.µÝ6·Ý6¸ Ýí&·#Ýí.·ÜÿÝí&·ÍÀ8ëÝí³Ýí&µåÕ!åÍÁÍÏÝí«Ýí.­!%åÍß"ô0!%ãÍßÁ"÷0í[ô0s#rý*÷0ý6ý6ý6(ý6!¾åí[÷0!åÍpÁ!Ýãí*ØÿåÍpÁ! "à!ãÍÁÝí³Ýí.µÝ6·Ý6¸Ã'ÍÑͨÝ6þÝ6ÿÝ6üÝ6ý!üåí*¹ÿåÍpÁÝ6÷í*¹ÿãí*ØÿåÍ[ÁÁ}´!(+" 1Ýí&þíÒÝíüíÞÝí.úí*úÿåÝí&üåÝí&þåÍ@ÁÁÁÝí&þ#Ýí.þÝíüÝí&þÍÀúLÝí&úåÝí&þå!¢å!ü0åÍ_ÁÁÁ*÷0ãÍ—ÁÝ6øA(!CåÝ~øoŸgåÍ9ÁÁ}ݾ÷ í*÷ÿå!åÍÝÁÁÝ4øÝFø:ù0ͬò±ÝíþÝí&üíÒÝí.úÝíþÍÝí.üëÝí&úíÞíÒÝíþíÞÝí.üÝåá++åÍ7ÁÝí&·#Ýí.·ÜÿÝí&·ÍÀÚ Ýí«Ýí&­åÕÝí³Ýí&µåÕ!åÍÁÍÏÍÏÝí¯Ýí.±åÕÜÿ!åÕ!ºå!åÍ&! 9ùÝí¯Ýí&±åÕÜÿ!ÍÒåÕ!DåÍ&Ã�Í‘Ýí&åýá*÷0ýíå%í°áý6ý6ýíýí&####s#rýí+++++s#rkbN#FÅÍvÁýí&##~· @##s#r++åýn&åÍÝÁÁ*÷0N#Fýí&q#p###å! åýí&####N#FÅÍ@ÁÁÁÃ�ýí&ýåÑå%í°áÃ�Í‘ååÝí&N#F! Ýí.þ:ö0þA Ýí&þ+Ýí.þí[ú0íÞëÝí&s#rÝ6ýÝ~ý· ØÃ�Í‘*÷0}´( N#FÝí&q#p!d"ú0*÷0####å*ú0å! åÍ@Ã�Í‘å:ö0þA!(+Ýí.þí[ }³o|²gÝí.þ>B2ù0Ã�>A2ö0!" ÉÍ‘Ýí&åýáÝ~ýwo&åÍ Á}´ ý6Ý~·(!þ(þ('þÊ�þ(%Ã�í[ú0!dÍÀò+ý6Ã�ý6Ã�ý6Ã�ý6Ã�Í‘åÝí&##Ýí.þëÝí&ëÝí& s#rÃ�Í‘ååÝí !Ýí.þÝí)Ýí s#rÝíÝí&þ)N#FÝí&þ#)q#pÝíþ!)ÝíÝíþs#rkbÝí.ü&Ýí&ü)åfÝí&þíÒÑÝíÝíþs#rÝí&ü#Ýí.üÝíüÝí&þ#ÍÀò±Ýí&þ+)åfÝí&þíÒÑÝíN#Fp+qÝíÝí&þ)N#FÅÝí&þ)åÝíþ!fíÒÑÝíÁq#p!"ú0Ã�Í‘åÝ~ÝwÿÝ~ÿÝwþÝ~þݾ(.Ã�.Ã�Í‘ååÝ6þÝ6ÿ5ÝíÝí&þ#~oŸgåÝíÝí&þ~oŸgåÍ9ÁÁ}· Ý6ýAÝí&þ#Ýí.þÝíþ!ÍÀòjWÝ~ýͬÝ~ýúÒ_ŸW!ZÍÀúÏÝ6þÝ6ÿÝ~ýþX !Ã�Ýí&åÝí&åÍVÁÁë!ÍÀòÝí&þÝí.þÓ!Ã�Í‘åÝ~ÝwÿÝ~ÿþ !Ã�!Ã�Í‘ÝåÑ!åÝnÝfå!…å͆ÁÁÁÃ�Í‘*e1åÝ~oŸgåÍ8 Ã�Í‘ÝnÝfåýáåÍ>Á}2b1ý#ý^!ËV ñýåáÃ�Í¥÷ÿÝnÝf åýáÝnÝf"e1Ã) Ý~ÿþ%( oŸgåÍEÁÃ) Ý6û Ý6úÝ6øÝ6ýÝ6÷ý~þ- ý#Ý4ýý~þ0!(+Ýuþý^!ËV(ýåÍZÁåýá:b1Ýwúý~þ* Ýn Ýf ~##Ýu Ýt Ýwúý#ý~þ. 0ý#ý~þ* Ýn Ýf ~##Ýu Ýt Ýwùý#$ýåÍZÁåýá:b1ÝwùÝ~þ· !Ýnú&Ýuùý~þl ý#Ý6÷ý~ý#Ýwÿ·Ê�þDÊþþO("þXÊ þcʵ þd(jþo(þsÊ þu( þx(_ÃÇ Ý6ûÝ~ý·( Ý~úÝwýÝ6úÝ~ÿ_ŸW!ËF(Ý6÷!EåÝnû&åÝnøåÝnúåÝnùåÝ~÷þÊÕ Ýn Ýf ^#V#~#foÃî Ý6ø¨Ý6û¢Ýn Ýf N#FíCc1#Ýu Ýt i`}´ !v"c1*c1åÍ‚ÁÝuüÝ~ù·(ÝFüͬ0Ý~ùÝwüÝFúÝ~üͬ0 Ý~úÝ–üÝwúÝ6úÝ~ý· &! åÍEÁÝ~úÝ5ú· ï*c1~#"c1oŸgåÍEÁÝ~üÝ5ü· æÝ~ý·Ê) ! åÍEÁÝ~úÝ5ú· ïÃ) Ýn Ýf ~##Ýu Ýt ÝwÿÝåá+"c1Ý6üÃ5 Ý~ø·Ýn Ýf ^#V !zŸogåÕÍ4Ù!9ùÙÝuúÝn÷&)ëÝn Ýf Ýu Ýt ! åÍEÁÝFýÝ5ýÝ~úͬ8êý~ý#Ýwÿ·Â Ã�ÑÁýãýËN(?ýË~ yþ ÅÕýå! åÍ8 áÁÑÁýí&}´(+ýí.ýí&q#ýí.ýãÅÕi`ÉýãÅÕÈ ÿÿíÍ‘ÝnÝf åýáýËNÊ ý~ý¶ :ý6ý6!åÝåÑ!åýn&åÍå ÁÁÁ·íR Ýn&Ã�ýËî!ÿÿÃ�!åýnýfåýn&åÍå ÁÁÁ·íR(ýËîý6ÿý6Ý~ýnýfw#ýuýt ýËîý6ý6ýËn(ž¨Í‘åÝ6ÿý!}ýåÍT ÁýÝ~ÿÆÿÝwÿ· êÃ�Í‘ÝnÝfåýáý~æ· !ÿÿÃ�ýåÍ» Áý~æøýwý~ý¶(ýË^ ýnýfåÍe Áý6ý6ýn&åÍuÁÿÿ·íR(¹ýËn ³!Ã�Í‘åÝnÝfåýáýËN(ý~ý¶(ý^ýV!·íRÝuþÝtÿ}´ !Ã�ÝnþÝfÿåýnýfåýn&åÍå ÁÁÁÝ^þÝVÿ·íR(ýËîý6ý6ýnýfýuýtýËn(·!ÿÿÃ�Í‘ý*g3ýåá}´( ýnýf"g3 !åÍÁåýáýåáÃ�Í‘ÝnÝfåýá*g3ýuýtý"g3Ã�Í‘Í/ ÝnÝfåÍÃ�× áÙáá:€<íDo&ÿ9ùÅ!€N Aë*+6þ  å þ ø¯+wëíCi3!½å!9ÙÕÕåÙÉÍ¥yÿÝ~ͬ8!ÿÿÃ�*Ýn&ͼ¾åýáÝ6þÝn Ýf ÝuùÝtúý~(þʲ þʲ þ(qþ(%þ(<½Í!ÝnÝf ~#ÝuÝt oŸgå!å͇ÁÁÝn Ýf +Ýu Ýt #}´ ÏÝnùÝfúÃ�Ý6þ'Í!ÝnÝf ~#ÝuÝt oŸgÝuûÝtüåÝnþ&å͇ÁÁÝn Ýf +Ýu Ýt #}´ ǶÍa]ÝsýÃÜÍ!ýn)&åÍuÁý~$æÝwþ_!€·íRÝuÿ]Ýn Ýf ÍÀ0Ý~ Ýwÿ€!åÕý^$ýV%ýn&ýf'ÍÒåÕýåÑ!!åÍÙÁÁÁÝ~ÿþ€ ÝnÝf å!å͇ÁÁ^ÝåÑ!yÿå!å͇ÁÝåÑ!yÿ6!ãÝåÑ!zÿåÝåÑ!yÿåͬÁÁÁýå!!å͇ÁÝnÿ&ãÝåÑÝnþ&yÿåÝnÝf åͬÁÁÁýå!"å͇ÁÁ}· IÝ^ÿÝnÝf ÝuÝt {!UåÕýåÑ!$Í%Ý^ÿÝn Ýf ·íRÝu Ýt ÝnýbåÍuÁÝ~ ݶ ¼ Ýný&åÍuÁÝ^ ÝV ÝnùÝfú·íRÃ�Í¥÷ÿ!ÝuûÝtüÝuÿÝuþÝuýÝåÑ!ûÿå!iå͇ÁÝuÿÝåÑ!ûÿãÍ�ÁÝs÷ÝrøÝuùÝtúÝ~ݶÊ�åÕÝnÝfÑs#r#Áq#pÝ^÷ÝVøÝnùÝfúÃ�Í‘ Ýn&Ë<ËË<ËË<ËË<Ë}æo¯gͼëÝ~æo&Ã�Í‘ååÝnÝfN#F!i ëzŸogÝsüÝrýÝuþÝtÿ!åÕÝåá++++Í.ÝnÝf##~oŸgåÍlÁëzŸogåÕÝåá++++Í%<!åÕÝåá++++Í.ÝnÝf###~oŸgåÍlÁëzŸogåÕÝåá++++Í%<!åÕÝåá++++Í.ÝnÝf####~oŸgåÍlÁëzŸogåÕÝåá++++Í%Ý^üÝVýÝnþÝfÿÃ�Í‘åÝ~ͬ8!ÿÿÃ�*Ýn&ͼ¾åýáÍaÝuÿýn)&åÍuÁý~(þ(þ(! åÍ£Á¯o|æg}´(ý~(þ ýå!å͇ÁÁý6(Ýnÿ&åÍuÁ!Ã�Í‘åÝnÝf·íR(!ÿÿÃ�*k3ÝuþÝtÿÝnÝf "k3ÝnþÝfÿÃ�Í‘å*k3·íRÊ�! å͇Á}·Ê�!å͇Á]Ýsÿ{þÂ�*k3}´Ì� *k3ͤÃ�Í‘ ÿÝåÍÝáo&Ã�Í‘Ý^ ÝåÍÝáÃ�Í‘ÝíÝNÝåýåÍýáÝáoŸgÃ�Í‘ÝíÝNÝåÍÝáÃ�Í‘åÝ6ÿÝnÿ&åÍuÁÝ4ÿÝ~ÿͬ8éÃ�Í‘Ý~ÝnÝfw_ÝV Ýn Ýf Í¿ÝnÝf#sÝ^ÝV Ýn Ýf Í¿ÝnÝf##sÃ�Í·áá"€ÃÍx͞ÒÍxÍÓÃ’Ö0Øþ ?Éíëþ (úþ (öþ-(þ+ ·Í78 )MD)) O íÀë!íRÉí##í#ãÅãÁÙáÁÑãÅãÁãåÅÕÙÅÉãÁ+í++íÅáÉÙáÙÁë ëÁíJÙåÙÉÕ_¨ú¶{˜ÑÉ{æ€W{˜z<ÑÉ|ªúÈíRÉ|æ€íR<ÉÙáÙÁë·íBëÁíBÙåÙÉÍ‘å*q3}´ !t3"q3"w3!q3"t3"o3!s3ËÆ!v3ËÆÝ^ÝV!ÍþͼÝuÝtý*o3!"m3ýËFÂÇÝnþÝfÿN#FýqýpýnýfÝuþÝtÿ##ËF(ßýåÑÝnÝfëÝnþÝfÿÍÀýå8[ÑÝnÝfýåÑÍÀýå8IÑÝnÝf"o3Ý^þÝVÿÍÀ*o30y3åí°áý^ýV*o3s#r#6++ýuýtýËÆýåá###Ã�ýåáÝuþÝtÿýnýfåýáåÑÝnþÝfÿÍÀÚ,í[w3ÝnþÝfÿ·íR q3ýåá·íR(!Ã�*m3#"m3ë!ÍÀÒ,Ý^ÝV!ÿÍþÿͼ"m3!åÍÁÝuþÝtÿí[m3Ý^þÝVÿÍÀ8²*m3åÍÁÝuþÝtÿÿÿ·íR(œÝ^þÝVÿ*w3s#r##·íR*w3##(ËÆˆí[m3ÝnþÝfÿ+++ëÝnþÝfÿs#ríSw3q3*w3s#r#ËÆÝnþÝfÿ##ˆÃ&Í‘ÝnÝf+++åýáý"o3ýˆÃ�Í¥úÿÝnÝfåýáÝnÝf ##ÍþÝuúÝtûýåÑýnýýfþ·íRÍÝuüÝtýýËÿF(ýå͸ÁÝnÝf åÍßÁÝuþÝtÿ}´(ýåÑ·íR ÝnþÝfÿÃ�Ý^þÝVÿkb+++~#fo·íRÍÝuúÝtûÝ^üÝVýÍÀ0 ÝnúÝfûÝuüÝtýÝnüÝfýͼåÝnþÝfÿåýåͬÁÁÁýåÑÝnþÝfÿÍÀ0˜ÝnúÝfûͼÝ^þÝVÿëýåáÍÀÒ5ÝnúÝfûͼÝ^þÝVÿýåÑ·íRÍͼÝ^þÝVÿë!y3åí°áÃ5ÍëÉÍþëɯë |ª|Í(ëÍ(|µÈÅDMëíËÁü+ë·ü+ëÉË|ÈDM!·íBÉÍ¥áÿÝ~ _ŸW!ÍÀòMÝ6 Ý~·(0ÝË ~(*Ý^ÝVÝnÝf åÕ!Á·íBÁë!íBÝsÝrÝuÝt Ý6Ý~ · Ý~ݶݶݶ Ý4 ÝåÑ!ÿÿåýá>Ý~!U_åÕÝ^ÝVÝnÝf Íë�nÿÿýýuÝ~!U_åÕÝåÑ!ÍñÝ5 Ý~ݶݶݶ ´Ý~ _ŸW!ÍÀúªÝåÑ!ÿÿýåÑ·íRÝ^Ýu ÝuÿÝ^ ÝnÿbÍÀ0Ý~ Ýwÿ! åÝnÝfͤÁÝF Ý5 Ý~ ͬú3Ý~·('!-åÝnÝfͤÁÝ5 ý~ý#oŸgåÝnÝfͤÁÝ~ Ý5 · ãÝnÿ&Ã�ÁÙÁÑÙëãëÙÅáãÙÅÉÑÍŽåýãýí&Ùåýí&ÙÉÍ8ÙëÙëÍ8ëÙëÙÃMÍ�ÍÕýíýí.ýáÉÍŽ|ªͰÅÙáYPú)ÉÍŽÍMÅÙáYPÉÍ�ÍèÃÇÍŽ|ͰåÙÑë·ú)ÉÍ�ÍýÃÇÍŽÍMåÙÑëÉÍ�ÍÃÇå!·íRëÁ!íBÉË|ÈÙMD!·íBÙMD!íBÉ{²Ù³²ÙÈ>ÃxåÙå·íRÙíRÙáÙá8Ù<ë)ëÙëíjëËzÊ_åÙå·íRÙíRÙÒ�áÙáÙ3333?ËËÙËËË:ËÙËËÙ= ÒÉáÙáÑÁx±(í°ÅÕåÙéíÓÉx·Èþ!8 Ë,ËËËöÉëãÙÑÁÙÁå!Ù!yHÍûyÍûÙyÙÍûÙxÙÍûåÙÑÉË?0ÙíZÙë)ëÙëíjëÙìÉáÑíS|3Õéíë*|3}´ !~3"|38  8ír8!ÿÿÉ*|3å"|3áÉ*|3€ ír!Ø+ÉÁÑáåÕž #· ÷!É!Ð++ÉÁÑáåÕÅKB~#· ùi`Éíë!·È#ùáýåÝåÝ!Ý9éÝùÝáýáÉéáýåÝåÝ!Ý9í##ë9ùëé1.1DHRYSTONE PROGRAM, SOME STRINGDHRYSTONE PROGRAM, 1'ST STRINGDHRYSTONE PROGRAM, 2'ND STRINGDhrystone(%s) time for %ld passes = %ld This machine benchmarks at %ld dhrystones/second (null)g1g1      AAAAAABBBBBB 0123456789ABCDEFDHRY wurde ganz normal erzeugt, DHRY280 habe ich mit einem f}r den Z280 gepatchten Compiler samt speziellem Optimizer und Laufzeitbibliothek gestrickt. Wenn es drauf ankommt, kann man also noch einiges an Leistung aus der CPU rausholen. [20:55] E0:RAMDISK>>dhry Dhrystone(1.1) time for 65500 passes = 80 This machine benchmarks at 818 dhrystones/second [20:57] E0:RAMDISK>>dhry280 Dhrystone(1.1) time for 65500 passes = 61 This machine benchmarks at 1073 dhrystones/second cu, Alexander Schmid