Esempio n. 1
0
File: gen.c Progetto: Godzil/osXdk
static void tmpalloc(sNode_t p) 
{
	p->x.optimized=0;
	p->x.name="*******";
	p->x.adrmode='*';
	releasetmp(p->kids[0]); releasetmp(p->kids[1]);
	switch (generic(p->op)) {
	case ARG:
		p->x.argoffset = argoffset;
		argoffset += p->syms[0]->u.c.v.i;
/*
		if (0) {
			Node k=p->kids[0];
			if (k->count==0
			    && generic(k->op)!=INDIR
			    && generic(k->op)!=ADDRF
			    && generic(k->op)!=ADDRG
			    && generic(k->op)!=ADDRL
			    && generic(k->op)!=CNST )
			{
				p->x.optimized=1;
				k->x.optimized=1;
				k->x.name=stringf("(sp),%d",p->x.argoffset);
				k->x.adrmode='I';
			}
		}
*/
		break;
	case CALL:
		p->x.argoffset = argoffset;
		argoffset = 0;
		break;
	case ASGN:
		if (optimizelevel>=3) 
		{	/* kids[1] : expression droite */
			if (optype(p->op)!=B
			    && p==p->kids[1]->x.next
			    &&   ( generic(p->kids[0]->op)==ADDRF
				|| generic(p->kids[0]->op)==ADDRG
				|| generic(p->kids[0]->op)==ADDRL)
			    && generic(p->kids[1]->op)!=INDIR
			    && generic(p->kids[1]->op)!=ADDRF
			    && generic(p->kids[1]->op)!=ADDRG
			    && generic(p->kids[1]->op)!=ADDRL
			    && generic(p->kids[1]->op)!=CNST )
			{
				sNode_t k=p->kids[1];
				p->x.optimized=1;
				k->x.optimized=1;
				k->x.result=p->kids[0]->x.result;
				k->x.name=k->x.result->x.name;
				k->x.adrmode=k->x.result->x.adrmode;
				if (k->x.adrmode=='C') k->x.adrmode='D';
				else k->x.adrmode='I';
			}
		}
		break;
	}
	if (needtmp(p)) gettmp(p);
}
Esempio n. 2
0
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(p_inputs, ev, data)
  {
  //déclaration des variables
  static terraZooData_s* theDataStruct;
  static int16_t aTemperature;
  static int16_t aLight;


  PROCESS_BEGIN();
  PRINTF("[p_inputs] Process Begin\r\n");

  //Initialisations
  theDataStruct=NULL;
  aTemperature=0;
  aLight=0;


  while (1)
    {
    PROCESS_WAIT_EVENT_UNTIL(ev==P_IN_START);
    PRINTF("[p_inputs] Restart\r\n");
  
    theDataStruct=(terraZooData_s*)data;

    //Get temp
    aTemperature=gettmp();
    theDataStruct->theTemp=aTemperature;

    PRINTF("[p_inputs] Temp : %d\r\n", theDataStruct->theTemp);

    //Get light
    aLight=500;//getlight();
    theDataStruct->theLight=aLight;

    PRINTF("[p_inputs] Light : %d\r\n", aLight);
    }

    PROCESS_END();
  }
Esempio n. 3
0
static int
asm_exec(const char *infile, const char *outfile)
{
	list_t *l;
	const char *file;
	int rv;

	if (opt.prog_asm == NULL)
		error("No assembler is defined");

	l = list_alloc();

	list_add_file(l, opt.prog_asm, &progdirs, X_OK);

	Wflag_add(l, W_ASM);

	list_add_list(l, opt.Wa);

	{
		-p gnu
		-f <type>
#if defined(USE_YASM)
		av[na++] = "-p";
		av[na++] = "gnu";

		av[na++] = "-f";
#if defined(os_win32)
		av[na++] = "win32";
#elif defined(os_darwin)
		av[na++] = "macho";
#else
		av[na++] = "elf";
#endif
#endif

#if defined(os_sunos) && defined(mach_sparc64)
		av[na++] = "-m64";
#endif

#if defined(os_darwin)
		if (Bstatic)
			av[na++] = "-static";
#endif

#if !defined(USE_YASM)
		if (vflag)
			av[na++] = "-v";
#endif
		if (kflag)
			av[na++] = "-k";

#ifdef os_darwin
		av[na++] = "-arch";
#if mach_amd64
		av[na++] = amd64_i386 ? "i386" : "x86_64";
#else
		av[na++] = "i386";
#endif
#else
#ifdef mach_amd64
		if (amd64_i386)
			av[na++] = "--32";
#endif
#endif

		av[na++] = "-o";
		if (outfile && cflag)
			ermfile = av[na++] = outfile;
		else if (cflag)
			ermfile = av[na++] = olist[i] = setsuf(clist[i], 'o');
		else
			ermfile = av[na++] = olist[i] = gettmp();
		av[na++] = assource;
		av[na++] = 0;

		if (callsys(as, av)) {
			cflag++;
			eflag++;
			cunlink(tmp4);
			continue;
		}
	}

	if (infile != NULL)
		list_add(l, infile);
	else if (outfile != NULL)
		list_add(l, "-");

	if (outfile != NULL) {
		list_add(l, "-o");
		list_add(l, outfile);
	}

	rv = list_exec(l);
	list_free(l);
	return rv;
}