19.06.2014 Views

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Analyse</strong> <strong>dynamique</strong> <strong>de</strong> programmes C<br />

982 ((symentry_t *) STK[ToP - 1].v.p.p)->id);<br />

983 }<br />

984 else<br />

985 EiC_formatMessage("Link error: possible usage of a<br />

function pointer"<br />

986 " before assignment.\n");<br />

987 env->lsp = 0;<br />

988 raise(SIGINT);<br />

989 }<br />

990<br />

991 /*printf("((symentry_t *)STK[%d - 1].v.p.p)->id = %s\n",ToP, ((symentry_t<br />

*)STK[ToP - 1].v.p.p)->id);*/<br />

992 EiC_CurrentFile = co<strong>de</strong>Name(co<strong>de</strong>);<br />

993 _if(EiC_traceON) {printf("\n%s :\n# %d:%d\n\t%s %d<br />

%d\n",(char*)EiC_CurrentFile,InSt[p].line,T[InSt[p].line].cptr_a,(char*)v.p.p,InSt[<br />

p].line,T[InSt[p].line].cptr_a);}<br />

994 InSt = co<strong>de</strong>->inst;<br />

995 p = -1;<br />

996 ToP += 5;<br />

997 if(EiC_traceON){<br />

998 lastln = -1;<br />

999 }<br />

1000<br />

1001 break;<br />

1002 }<br />

1003<br />

1004 case call:<br />

1005 if(EiC_traceON) {printf("\tCall %d %d<br />

",InSt[p].line,T[InSt[p].line].cptr_a); }<br />

1006 argc = ARGC;<br />

1007 hold_AR = AR[2];<br />

1008 hold_AR1 = AR[1];<br />

1009 ARGC = STK[ToP].v.ival;<br />

1010<br />

1011 /*AR[2] = &env->LAR[env->lsp - ARGC];*/<br />

1012 AR[2] = &env->LAR[env->lsp];<br />

1013 if(InSt[p].ext)<br />

1014 STK[ToP - 1].v = STK[ToP - 1].v.vfunc ();<br />

1015 else<br />

1016 STK[ToP - 1].v.vfunc();<br />

1017<br />

1018 env->lsp -= STK[ToP].v.ival;<br />

1019 ARGC = argc;<br />

1020 AR[2] = hold_AR;<br />

1021 AR[1] = hold_AR1;<br />

1022 ToP--;<br />

1023 break;<br />

1024<br />

1025 case eicreturn:<br />

1026 if(EiC_traceON) {printf("\tReturn %d %d<br />

%d\n",STK[ToP].v.ival,InSt[p].line,T[InSt[p].line].cptr_a);}<br />

1027 ToP -= 6; /* over write co<strong>de</strong> pointer */<br />

1028 p = STK[ToP + 2].v.ival;<br />

1029<br />

1030 EiC_CurrentFile = (char*)STK[ToP+2].type;<br />

1031<br />

1032 InSt = STK[ToP + 3].v.p.p;<br />

1033 env->lsp = STK[ToP + 5].v.ival;<br />

1034 STK[ToP].v = STK[ToP + 6].v;<br />

1035<br />

1036 AR[1] = &env->LAR[STK[ToP + 4].v.ival];<br />

1037 if(EiC_traceON) {<br />

1038<br />

1039 EiC_eicpop(&names,&v);<br />

1040 EiC_formatMessage("\n[%s] ", (char*)v.p.p);<br />

1041 lastln = -1;<br />

1042 }<br />

1043 break;<br />

116

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!