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); }
/*---------------------------------------------------------------------------*/ 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(); }
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; }