int Display::showSmallNumber(int n,DisplayDotMode bla) { dot=bla; int error=0; int b=min(999,max(-199,n)); if(b!=n)error=1; if(b<0){ if(b<-100){ d1=toBin(-1); }else{ d1=0b01000000; } b=-b; }else{ d1=toBin(b/100); } d2=toBin((b/10)%10); d3=toBin((b)%10); Show(); return error; }
void nDSum(int nD, int nSamp, double *S, double *data, double *bins, double *mins, double *maxes, double *A) { int iS; for (iS = 0; iS < nSamp; iS++) { int b = toBin(nD, bins, mins, maxes, S + iS * nD); A[b] = A[b] + data[iS]; } }
void nDHist(int nD, int nSamp, double *S, double *bins, double *mins, double *maxes, double *H) { int iS; for (iS = 0; iS < nSamp; iS++) { int b = toBin(nD, bins, mins, maxes, S + iS * nD); H[b] = H[b] + 1; } }
unsigned char* hexbyte(char *hexa, unsigned char a[]) { int i=0,j=0; while(*(hexa+i)!='\0') { //printf(" -%d- ",toBin(*(hexa+i))); a[j] = toBin(*(hexa+i)); a[j] = a[j] << 4; //printf("%d",a[j]); //printf(" -%d- ",toBin(*(hexa+i+1))); a[j] += toBin(*(hexa+i+1)); printf("%d ",a[j]); j++; i+=2; } //printf("%d",strlen(hexa)); return a; }
void toDec(char *in, char form, int base, LLBin **list) { int i; for (i = strlen(in) - 1; i >= 0; i--) { int x = 0; /* Convert A-Fa-f to 10-15. */ if (base == HEX_BASE && !isdigit(in[i])) { x = hexCharToInt(in[i]); } else { x = in[i] - '0'; } toBin(x, form, list); } }
SEXP multiply( SEXP Rp, SEXP Rq, SEXP Rn ) { /* D E C L I N P U T */ const int *p, *q, *n; /* D E C L O U T P U T */ int *res; SEXP Rres; /* D E C L L O C A L */ int i, j, idx, *mon, *m, *tmp, *old; SEXP Rmon, Rm, Rtmp, Rold; /* I N I T I N P U T */ PROTECT(Rp = AS_INTEGER(Rp) ); PROTECT(Rq = AS_INTEGER(Rq) ); PROTECT(Rn = AS_INTEGER(Rn) ); p = INTEGER_POINTER(Rp); q = INTEGER_POINTER(Rq); n = INTEGER_POINTER(Rn); /* I N I T O U T P U T */ PROTECT(Rres = NEW_INTEGER((1<<(*n)))); res = INTEGER_POINTER(Rres); /* I N I T L O C A L */ PROTECT(Rm = NEW_INTEGER((*n))); PROTECT(Rmon = NEW_INTEGER((*n))); PROTECT(Rtmp = NEW_INTEGER((1<<(*n)))); PROTECT(Rold = NEW_INTEGER((1<<(*n)))); m = INTEGER_POINTER(Rm); mon = INTEGER_POINTER(Rmon); tmp = INTEGER_POINTER(Rtmp); old = INTEGER_POINTER(Rold); /* T H E F U N C T I O N */ for( i=0; i<(1<<(*n)); ++i ) res[i] = 0; for( i=0; i<(1<<(*n)); ++i ) if( p[i]!=0 ) { /* then multiply q with monomial i */ mon = toBin(mon, i, (*n)); for( j=0; j<(1<<(*n)); ++j ) { tmp[j] = 0; old[j] = res[j]; res[j] = q[j]; } /* res = mul_pm( res, mon, (*n) ); (m <-> mon) */ for(j=0; j<(1<<(*n)); ++j) if(res[j]!=0) { m = toBin (m, j, (*n)); /* get monomial j */ m = mul_mm (m, mon, (*n)); /* m <- m * mon */ idx = toInt (m, (*n)); tmp[idx] = ( tmp[idx]+1 )%2; /* add m to tmp */ } for(j=0; j<(1<<(*n)); ++j) res[j]=tmp[j]; /* res = add_pp( res, old, (*n) ); */ for(j=0; j<(1<<(*n)); ++j) res[j] = ( res[j]+old[j] )%2; } /* G O O D B Y E */ UNPROTECT(8); return Rres; }
int main(int argc,char** argv){ init(HOST,PORT); msg t, *r; char nr_secv_sender = 0; FILE *fd = fopen("date_intrare", "r"); //variabile folosite pentru a scrie data si ora in fisierul log.txt; time_t timp = time(NULL); struct tm timp_str = *(localtime(&timp)); //alegem o dimensiune de pachet aleatoare, care imi intoarca un numar intre 1 si 60; int rnd = rand() % 61; //cat timp mai citesc din fisier; while(fgets(t.payload, rnd, fd) != NULL){ //pun textul in payload; t.len = strlen(t.payload); //calculez CheckSum char CheckSum = getXor(t.payload); //printez data, ora, numarul secventei, payloadul si CheckSumul cadrului trimis; printf("[sender] %d-%02d-", timp_str.tm_year + 1900, timp_str.tm_mon + 1); printf("%d %2d:%2d:%02d\n", timp_str.tm_mday, timp_str.tm_hour, timp_str.tm_min, timp_str.tm_sec); printf("Am trimis urmatorul pachet:\n"); printf("Seq_No: %d\n", nr_secv_sender); printf("Payload: %s\n", t.payload); printf("CheckSum: %s\n", toBin(CheckSum)); printf("--------------------------------------------------------------------\n"); //pun paritatea pe penultima pozitie t.payload[t.len + 2] = CheckSum; //pun seq_nr pe ultima pozitie t.payload[t.len + 3] = nr_secv_sender; //trimit mesajul send_message(&t); //resetez dimensiunea pachetului de trimis rnd = rand() % 61; //primesc ack; setez valoarea de timeout la 200 ms r = receive_message_timeout(200); //cat timp nu am trimis pachetul in timp util; while(r == NULL){ //printez data, ora, numarul secventei, payloadul si CheckSumul cadrului trimis; printf("[sender] %d-%02d-", timp_str.tm_year + 1900, timp_str.tm_mon + 1); printf("%d %2d:%2d:%02d\n", timp_str.tm_mday, timp_str.tm_hour, timp_str.tm_min, timp_str.tm_sec); printf("Am trimis urmatorul pachet:\n"); printf("Seq_No: %d\n", nr_secv_sender); printf("Payload: %s\n", t.payload); printf("CheckSum: %s\n", toBin(CheckSum)); printf("--------------------------------------------------------------------\n"); send_message(&t); r = receive_message_timeout(200); } char nr_secv_receiver = r->payload[0]; //cat timp primesc ack pentru acelasi pachet, il retrimit //si reprimesc ack pentru a ma asigura ca a fost trimis bine while(nr_secv_receiver == nr_secv_sender || r == NULL){ //printez data, ora, numarul secventei, payloadul si CheckSumul cadrului trimis; printf("[sender] %d-%02d-", timp_str.tm_year + 1900, timp_str.tm_mon + 1); printf("%d %2d:%2d:%02d\n", timp_str.tm_mday, timp_str.tm_hour, timp_str.tm_min, timp_str.tm_sec); printf("Am trimis urmatorul pachet:\n"); printf("Seq_No: %d\n", nr_secv_sender); printf("Payload: %s\n", t.payload); printf("CheckSum: %s\n", toBin(CheckSum)); printf("--------------------------------------------------------------------\n"); send_message(&t); r = receive_message_timeout(200); nr_secv_receiver = r->payload[0]; } //incrementez numarul secventei; nr_secv_sender++; } return 0; }
int main(int argc, char *argv[]) { FILE *fp,*opfp,*omc,*mc,*testf; int test,n,c,ln,i,m,m1,m2,b,flag=0,len,last,digit=0,var,id=0,f,flen=0; long int madd=0; char ch,*nem[4],*str,*token,*s=" ",state,*str1,*s1="\t",*token1,*temp,*token2,c1;//*labels[10] str = (char *)malloc(sizeof(char)*50); str1 = (char *)malloc(sizeof(char)*50); token1 = (char *)malloc(sizeof(char)*50); token2 = (char *)malloc(sizeof(char)*50); register_init(); instr_init(); opfp = fopen("stable.txt","r"); if(opfp == NULL) { perror("Error while opening the file.\n"); exit(EXIT_FAILURE); } //printf("file name %s\n", argv[1]); fp = fopen(argv[1],"r"); // opens file testf = fopen(argv[1],"r"); omc = fopen("mcode.txt","w"); mc= fopen("onlymcode.txt","w"); if(fp == NULL) { perror("Error while opening the file.\n"); exit(EXIT_FAILURE); } label lbl[10]; for(m1=0;m1<10;m1++) { lbl[m1].labels = (char *)malloc(sizeof(char)*10); } for(m1=0;m1<10;m1++) { lbl[m1].mad = (char *)malloc(sizeof(char)*10); } while( fgets(str1,50,opfp)!=NULL) { token=strtok(str1,s1); while(token!=NULL) { strcpy(lbl[lb].labels,token); token=strtok(NULL,s1); strcpy(lbl[lb].mad,token); token=strtok(NULL,s1); }++lb; } /*for(m1=0;m1<lb;m1++) { printf("Labels :: %s \t address :: %s\n",lbl[m1].labels,lbl[m1].mad); } */ for (c1 = getc(testf); c1 != EOF; c1 = getc(testf)){ if (c1 == '\n') // Increment count if this character is newline flen++; } fclose(testf); while( fgets(str,50,fp)!=NULL) //line reading { state='X'; if(flen==l){ strcat(str,"\0"); } if((str!="")&&((flen!=l))) str[strlen(str)-1]='\0'; if(l>0) { //printf( "\n%00000007ld\t%s",madd,str ); fprintf(omc,"\n%00000007ld\t%s",madd,str ); madd+=32; state='X'; token = strtok(str,s); // instruction name len=strlen(token); last=token[len-1]; if(last==58) { token = strtok(NULL,s); } while( token != NULL ) { for(b=1;b<=4;b++) // MOV { if(strcmp(token,(ins[b].nemo))==0) { state='M'; id=b; break; } } for(b=5;b<=8;b++) // direct address { if(strcmp(token,(ins[b].nemo))==0) { state='I'; //printf("\nMCODE : %s ",ins[b].mcode); fprintf(omc,"\nMCODE : %s ",ins[b].mcode); fprintf(mc,"\n%s",ins[b].mcode); break; } } for(b=9;b<=10;b++) // ADD { if(strcmp(token,(ins[b].nemo))==0) { state='A'; id=b; break; } } for(b=11;b<=13;b++) // MUL { if(strcmp(token,(ins[b].nemo))==0) { state='A'; id=b; break; } } for(b=14;b<=15;b++) // AND { if(strcmp(token,(ins[b].nemo))==0) { state='A'; id=b; break; } } for(b=16;b<=18;b++) // OR { if(strcmp(token,(ins[b].nemo))==0) { state='O'; break; } } for(b=19;b<=20;b++) // NOT { if(strcmp(token,(ins[b].nemo))==0) { state='N'; id=b; break; } } for(b=21;b<=26;b++) // type INS r1 { if(strcmp(token,(ins[b].nemo))==0) { //printf("\nMCODE : %s ",ins[b].mcode); fprintf(omc,"\nMCODE : %s ",ins[b].mcode); fprintf(mc,"\n%s",ins[b].mcode); state='R'; break; } } if(strcmp(token,(ins[27].nemo))==0) // compare CMP { id=28; state='M'; } for(b=28;b<=36;b++) // branching instruction JMP { if(strcmp(token,(ins[b].nemo))==0) { state='B'; //printf("\nMCODE : %s ",ins[b].mcode); fprintf(omc,"\nMCODE : %s ",ins[b].mcode); fprintf(mc,"\n%s",ins[b].mcode); break; } } for(b=37;b<=40;b++) // machine control instruction { if(strcmp(token,(ins[b].nemo))==0) { state='C'; //printf("\nMCODE : %s ",ins[b].mcode); fprintf(omc,"\nMCODE : %s\n",ins[b].mcode); fprintf(mc,"\n%s",ins[b].mcode); } } switch(state) { case 'M': token = strtok(NULL,s); // 1st token------- if(token!=NULL){ if(token[0]==91) { token++; token[strlen(token)-1]='\0'; f=4; } for(m=0;m<64;m++) { if((strcmp(token,regs[m].regi)==0)) { strcpy(token1,regs[m].address); strcpy(token2,regs[m].address); strcat(token1," "); token = strtok(NULL,s); // 2nd token------- if(token!=NULL){ if(token[0]==91) { token++; token[strlen(token)-1]='\0'; for(m1=0;m1<64;m1++) { if((strcmp(token,regs[m1].regi)==0)) { strcat(token1,regs[m1].address); strcat(token2,regs[m1].address); //printf("\nMCODE : %s %s",ins[3].mcode,token1); fprintf(omc,"\nMCODE : %s %s\n",ins[3].mcode,token1); fprintf(mc,"\n%s%s",ins[3].mcode,token2); break; } } token="xx"; } for(m1=0;m1<64;m1++) { if((strcmp(token,regs[m1].regi)==0)) { if(f!=4) { strcat(token1,regs[m1].address); strcat(token2,regs[m1].address); //printf("\nMCODE : %s %s",ins[id].mcode,token1); fprintf(omc,"\nMCODE : %s %s\n",ins[id].mcode,token1); fprintf(mc,"\n%s%s",ins[id].mcode,token2); state='F'; } if(f==4) { strcat(token1,regs[m1].address); strcat(token2,regs[m1].address); //printf("\nMCODE : %s %s",ins[4].mcode,token1); fprintf(omc,"\nMCODE : %s %s\n",ins[4].mcode,token1); fprintf(mc,"\n%s%s",ins[4].mcode,token2); f=0; state='F'; } break; } else { if(token[0]==35) { for(var=0;var<lb;var++) { if(strcmp(lbl[var].labels,token)==0) { lbl[var].mad[strlen(lbl[var].mad)-1]='\0'; strcat(token1,appendLeft(toBin(atoi(lbl[var].mad)))); strcat(token2,appendLeft(toBin(atoi(lbl[var].mad)))); //printf("\nMCODE : %s %s",ins[++id].mcode,token1); fprintf(omc,"\nMCODE : %s %s\n",ins[id].mcode,token1); fprintf(mc,"\n%s%s",ins[id].mcode,token2); token++; break; } } } } } token = strtok(NULL,s); if(token!=NULL){state='X';break;} }break; } } } break; case 'I': token = strtok(NULL,s); // 1st token------- if(token!=NULL){ for(m=0;m<64;m++) { if((strcmp(token,regs[m].regi)==0)) { //printf("%s ",regs[m].address); fprintf(omc,"%s ",regs[m].address); fprintf(mc,"%s",regs[m].address); break; } } } token = strtok(NULL,s); // 2nd token------- //printf("%s",hextoBin(token)); fprintf(omc,"%s\n",hextoBin(token)); fprintf(mc,"%s",hextoBin(token)); break; case 'A': token = strtok(NULL,s);//1st token for(m=0;m<64;m++) { if((strcmp(token,regs[m].regi)==0)) { strcpy(token1,regs[m].address); strcpy(token2,regs[m].address); strcat(token1," "); token = strtok(NULL,s);//2nd token if(token[0]==91) { token++; token[strlen(token)-1]='\0'; id++; f=6; } for(m1=0;m1<64;m1++) { if((strcmp(token,regs[m1].regi)==0)) { strcat(token1,regs[m1].address); strcat(token2,regs[m1].address); if(f==6){ //printf("\nMCODE : %s %s",ins[id].mcode,token1); fprintf(omc,"\nMCODE : %s %s\n",ins[id].mcode,token1); fprintf(mc,"\n%s%s",ins[id].mcode,token2); f=0; break; } token = strtok(NULL,s);//3rd token for(m2=0;m2<64;m2++) { if((strcmp(token,regs[m2].regi)==0)) { strcat(token1," "); strcat(token1,regs[m2].address); strcat(token2,regs[m2].address); //printf("\nMCODE : %s %s",ins[id].mcode,token1); fprintf(omc,"\nMCODE : %s %s\n",ins[id].mcode,token1); fprintf(mc,"\n%s%s",ins[id].mcode,token2); break; } } break; } } break; } } break; case 'O': token = strtok(NULL,s);//1st token for(m=0;m<64;m++) { if((strcmp(token,regs[m].regi)==0)) { strcpy(token1,regs[m].address); strcpy(token2,regs[m].address); strcat(token1," "); token = strtok(NULL,s);//2nd token if(token[0]==91) { token++; token[strlen(token)-1]='\0'; id++; id++; f=6; } if(checkHex(token)==1) { id++; //printf("\nMCODE : %s %s %s",ins[id].mcode,token1,hextoBin(token)); fprintf(omc,"\nMCODE : %s %s %s\n",ins[id].mcode,token1,hextoBin(token)); fprintf(mc,"\n%s%s%s",ins[id].mcode,token2,hextoBin(token)); break; } for(m1=0;m1<64;m1++) { if((strcmp(token,regs[m1].regi)==0)) { strcat(token1,regs[m1].address); strcat(token2,regs[m1].address); strcat(token1," "); if(f==6){ //printf("\nMCODE : %s %s",ins[id].mcode,token1); fprintf(omc,"\nMCODE : %s %s\n",ins[id].mcode,token1); fprintf(mc,"\n%s%s",ins[id].mcode,token2); f=0; break; } token = strtok(NULL,s);//3rd token for(m2=0;m2<64;m2++) { if((strcmp(token,regs[m2].regi)==0)) { //puts(token); strcat(token1,regs[m2].address);//puts(token1); strcat(token2,regs[m2].address); //printf("\nMCODE : %s %s",ins[id].mcode,token1); fprintf(omc,"\nMCODE : %s %s\n",ins[id].mcode,token1); fprintf(mc,"\n%s%s",ins[id].mcode,token2); break; } } break; } } break; } } break; case 'N': token = strtok(NULL,s); // 1st token------- if(token!=NULL){ if(token[0]==91) { token++; token[strlen(token)-1]='\0'; id++; } for(m=0;m<64;m++) { if((strcmp(token,regs[m].regi)==0)) { //printf("\nMCODE : %s %s",ins[id].mcode,regs[m].address); fprintf(omc,"\nMCODE : %s %s\n",ins[id].mcode,regs[m].address); fprintf(mc,"\n%s%s",ins[id].mcode,regs[m].address); break; } } } break; case 'R': token = strtok(NULL,s); // 1st token------- if(token!=NULL){ for(m=0;m<64;m++) { if((strcmp(token,regs[m].regi)==0)) { //printf("%s",regs[m].address); fprintf(omc,"%s\n",regs[m].address); fprintf(mc,"%s",regs[m].address); break; } } } break; case 'B': token = strtok(NULL,s); // 1st token------- if(token!=NULL){ for(m1=0;m1<lb;m1++) { if(strcmp(lbl[m1].labels,token)==0) { lbl[m1].mad[strlen(lbl[m1].mad)-1]='\0'; //printf("%s",appendLeft(toBin(atoi(lbl[m1].mad)))); fprintf(omc,"%s\n",appendLeft(toBin(atoi(lbl[m1].mad)))); fprintf(mc,"%s",appendLeft(toBin(atoi(lbl[m1].mad)))); break; } if(m1==lb-1) { printf("\nError in code!!No lebel found in jump instruction at line %d !! Exit from program !!",l+1); exit(0); } } if(lb==0) { printf("\nError in code!!No lebel found in jump instruction at line %d !! Exit from program !!",l+1); exit(0); } } break; default: state='X'; } token = strtok(NULL,s); break; } } l++; } printf("compilation successful :D "); fclose(fp); fclose(opfp); fclose(mc); append(); return 0; }