Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
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