raoulduke
17-07-2003, 08:45
Hi Jungs !
Habn kleines Problem, da ich absoluter
Dummy bin, was C angeht. Ich hab nen
Quellcode, in C geschrieben, der einst
für eine IBM Mainframe (z/OS - USS)
geschrieben wurde. An und für sich sollte
die Portierung kein Thema sein, gcc
gibt nur leider Syntaxfehler zurück und
ich kann damit leider kaum was anfangen.
Es sind um genau zu sein 4 Programme,
die CPU bzw. Speicherintensiv rechnen.
Ich poste euch mal die sourcen, vielleicht
kann mir ja jemand weiterhelfen !?
( 'gcc -o bench001 bench001.c' <--stimmt schon oder ? )
bench001.c
_______________________________________________
#include <stdio.h>
int main(int argc, char **argv)
ä
int i,j,N;
char Flag;
N=0;
Flag='E';
sscanf(argv??(1??),"%d",&N);
if(N>0)Flag='N';
if(Flag=='E') ä
printf("Usage: bench001 NÖn");
printf("N (integer) = number of iterationsÖn");
return 0;
ü;
j=1;
for(i=1;i<=N;i++) ä
j=j+i;
j=i*j;
j=j-i;
j=j % i;
j+=1;
ü;
return 0;
ü
_______________________________________________
bench002.c
_______________________________________________
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
ä
int i,j,N,B,C,S;
char Flag;
char *buffer,*heap;
N=0;
B=0;
S=0;
C=0;
Flag='E';
if(argc==5) ä
Flag='N';
sscanf(argv??(1??),"%d",&B);
if(B==0)Flag='E';
sscanf(argv??(2??),"%d",&C);
if(C==0)Flag='E';
sscanf(argv??(3??),"%d",&S);
if(S==0)Flag='E';
sscanf(argv??(4??),"%d",&N);
if(N==0)Flag='E';
ü;
if(Flag=='E') ä
printf("Usage: bench002 B C S NÖn");
printf("B (integer) = blocksizeÖn");
printf("C (integer) = number of blocksÖn");
printf("S (integer) = steppingÖn");
printf("N (integer) = number of iterationsÖn");
return 0;
ü;
buffer=(char *) malloc(B);
heap =(char *) malloc(B*C);
j=0;
for(i=1;i<=N;i++) ä
memcpy(&heap??(j*B??),buffer,B);
j+=S;
j=j%C;
ü;
free(buffer);
free(heap);
return 0;
ü
_______________________________________________
bench003.c
_______________________________________________
#include <stdio.h>
int main(int argc, char **argv)
ä
int i,j,N;
char Flag,ch;
N=0;
Flag='E';
sscanf(argv??(1??),"%c",&ch);
if(ch=='y')Flag='p';
if(ch=='Y')Flag='p';
if(ch=='n')Flag='n';
if(ch=='N')Flag='n';
sscanf(argv??(2??),"%d",&N);
if(N==0)Flag='E';
if(Flag=='E') ä
printf("Usage: bench003 p NÖn");
printf("p (y/n) = print result to stdoutÖn");
printf("N (integer) = sets limit for prime number search to NÖn");
return 0;
ü;
for(i=2;i<N;i++) ä
for(j=2;j<i;j++)
if(i%j==0) break;
if(i==j)
if(Flag=='p')
printf("%d ",i);
ü;
return 0;
ü
_______________________________________________
Bench004.c
_______________________________________________
#include <stdio.h>
typedef unsigned char byte;
const byte Mask??(8??)=ä0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x 80ü;
int main(int argc, char **argv)
ä
int i,j,N;
char Flag,ch;
byte *sieve;
N=0;
Flag='E';
sscanf(argv??(1??),"%c",&ch);
if(ch=='y')Flag='p';
if(ch=='Y')Flag='p';
if(ch=='n')Flag='n';
if(ch=='N')Flag='n';
sscanf(argv??(2??),"%d",&N);
if(N==0)Flag='E';
if(Flag=='E') ä
printf("Usage: bench004 p NÖn");
printf("p (y/n) = print result to stdoutÖn");
printf("N (integer) = sets limit for prime number search to NÖn");
return 0;
ü;
sieve=(byte *) malloc(N/8+1);
for(i=0;i<N/8+1;i++)sieve??(i??)=0;
for(i=2;i<N;i++) ä
if((sieve??(i/8??) & Mask??(i%8??))Ü=0)continue;
if(Flag=='p')printf("%d ",i);
for(j=i+i;j<N;j+=i)sieve??(j/8??)!=Mask??(j%8??);
ü;
free(sieve);
return 0;
ü
_______________________________________________
Vielen Dank schon mal vorab !
Duke
Habn kleines Problem, da ich absoluter
Dummy bin, was C angeht. Ich hab nen
Quellcode, in C geschrieben, der einst
für eine IBM Mainframe (z/OS - USS)
geschrieben wurde. An und für sich sollte
die Portierung kein Thema sein, gcc
gibt nur leider Syntaxfehler zurück und
ich kann damit leider kaum was anfangen.
Es sind um genau zu sein 4 Programme,
die CPU bzw. Speicherintensiv rechnen.
Ich poste euch mal die sourcen, vielleicht
kann mir ja jemand weiterhelfen !?
( 'gcc -o bench001 bench001.c' <--stimmt schon oder ? )
bench001.c
_______________________________________________
#include <stdio.h>
int main(int argc, char **argv)
ä
int i,j,N;
char Flag;
N=0;
Flag='E';
sscanf(argv??(1??),"%d",&N);
if(N>0)Flag='N';
if(Flag=='E') ä
printf("Usage: bench001 NÖn");
printf("N (integer) = number of iterationsÖn");
return 0;
ü;
j=1;
for(i=1;i<=N;i++) ä
j=j+i;
j=i*j;
j=j-i;
j=j % i;
j+=1;
ü;
return 0;
ü
_______________________________________________
bench002.c
_______________________________________________
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
ä
int i,j,N,B,C,S;
char Flag;
char *buffer,*heap;
N=0;
B=0;
S=0;
C=0;
Flag='E';
if(argc==5) ä
Flag='N';
sscanf(argv??(1??),"%d",&B);
if(B==0)Flag='E';
sscanf(argv??(2??),"%d",&C);
if(C==0)Flag='E';
sscanf(argv??(3??),"%d",&S);
if(S==0)Flag='E';
sscanf(argv??(4??),"%d",&N);
if(N==0)Flag='E';
ü;
if(Flag=='E') ä
printf("Usage: bench002 B C S NÖn");
printf("B (integer) = blocksizeÖn");
printf("C (integer) = number of blocksÖn");
printf("S (integer) = steppingÖn");
printf("N (integer) = number of iterationsÖn");
return 0;
ü;
buffer=(char *) malloc(B);
heap =(char *) malloc(B*C);
j=0;
for(i=1;i<=N;i++) ä
memcpy(&heap??(j*B??),buffer,B);
j+=S;
j=j%C;
ü;
free(buffer);
free(heap);
return 0;
ü
_______________________________________________
bench003.c
_______________________________________________
#include <stdio.h>
int main(int argc, char **argv)
ä
int i,j,N;
char Flag,ch;
N=0;
Flag='E';
sscanf(argv??(1??),"%c",&ch);
if(ch=='y')Flag='p';
if(ch=='Y')Flag='p';
if(ch=='n')Flag='n';
if(ch=='N')Flag='n';
sscanf(argv??(2??),"%d",&N);
if(N==0)Flag='E';
if(Flag=='E') ä
printf("Usage: bench003 p NÖn");
printf("p (y/n) = print result to stdoutÖn");
printf("N (integer) = sets limit for prime number search to NÖn");
return 0;
ü;
for(i=2;i<N;i++) ä
for(j=2;j<i;j++)
if(i%j==0) break;
if(i==j)
if(Flag=='p')
printf("%d ",i);
ü;
return 0;
ü
_______________________________________________
Bench004.c
_______________________________________________
#include <stdio.h>
typedef unsigned char byte;
const byte Mask??(8??)=ä0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x 80ü;
int main(int argc, char **argv)
ä
int i,j,N;
char Flag,ch;
byte *sieve;
N=0;
Flag='E';
sscanf(argv??(1??),"%c",&ch);
if(ch=='y')Flag='p';
if(ch=='Y')Flag='p';
if(ch=='n')Flag='n';
if(ch=='N')Flag='n';
sscanf(argv??(2??),"%d",&N);
if(N==0)Flag='E';
if(Flag=='E') ä
printf("Usage: bench004 p NÖn");
printf("p (y/n) = print result to stdoutÖn");
printf("N (integer) = sets limit for prime number search to NÖn");
return 0;
ü;
sieve=(byte *) malloc(N/8+1);
for(i=0;i<N/8+1;i++)sieve??(i??)=0;
for(i=2;i<N;i++) ä
if((sieve??(i/8??) & Mask??(i%8??))Ü=0)continue;
if(Flag=='p')printf("%d ",i);
for(j=i+i;j<N;j+=i)sieve??(j/8??)!=Mask??(j%8??);
ü;
free(sieve);
return 0;
ü
_______________________________________________
Vielen Dank schon mal vorab !
Duke