コード例 #1
0
ファイル: Display.cpp プロジェクト: wfailla/PKeS
    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;  
    }
コード例 #2
0
ファイル: ndAverage.c プロジェクト: buzsakilab/buzcoderough
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];
    }
}
コード例 #3
0
ファイル: ndAverage.c プロジェクト: buzsakilab/buzcoderough
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;
    }
}
コード例 #4
0
ファイル: hexdigit.c プロジェクト: Ramkeerthy/ZOHO-Enrich
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;
}
コード例 #5
0
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);
    }
}
コード例 #6
0
ファイル: operations.cpp プロジェクト: cran/boolfun
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;    
}
コード例 #7
0
ファイル: send.c プロジェクト: adrianaene/PAR-Protocol
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;
}
コード例 #8
0
ファイル: pass2.c プロジェクト: sayantan93/pass2_assembler
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;
}