Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Analyse</strong> <strong>dynamique</strong> <strong>de</strong> programmes C<br />
922 case geptr: geTYPE(p.p); if(EiC_traceON) {printf("geptr \n");}<br />
923 break;<br />
924 case lorptr: lorTYPE(p.p); if(EiC_traceON) {printf("lorptr \n");}<br />
925 break;<br />
926 case landptr: landTYPE(p.p); if(EiC_traceON) {printf("landptr<br />
\n");}<br />
927 break;<br />
928 case notptr: notTYPE(p.p); if(EiC_traceON) {printf("notptr \n");}<br />
929 break;<br />
930 case ptr2int: castTYPES(p.p, ival, int); if(EiC_traceON)<br />
{printf("ptr2int \n");}<br />
931 break;<br />
932 case ptr2long: castTYPES(p.p, lval, long); if(EiC_traceON)<br />
{printf("ptr2long \n");}<br />
933 break;<br />
934<br />
935 case lval: /* on the fly safe pointer */<br />
936 STK[ToP].v.p.p = &AR[InSt[p].ext][InSt[p].val.ival].v;<br />
937 STK[ToP].v.p.ep = (char *) STK[ToP].v.p.p + (size_t)<br />
938 InSt[p].val.p.ep;<br />
939 STK[ToP].v.p.sp = STK[ToP].v.p.p;<br />
940 _/*if(EiC_traceON) {printf("lval \n");}*/<br />
941 break;<br />
942 case assigntype: assignTYPE; /*if(EiC_traceON) {printf("assigntype<br />
");}*/<br />
943 break;<br />
944 case stoval:<br />
945 /*if(EiC_traceON) {printf("stoval "); }*/<br />
946 switch(InSt[p].ext) {<br />
947 case t_char:<br />
948 case t_uchar: STK[ToP].v.cval = STK[ToP].v.ival;<br />
if(EiC_traceON) {printf("t_char ou t_uchar\n");}<br />
949 break;<br />
950 case t_short:<br />
951 case t_ushort: STK[ToP].v.sval = STK[ToP].v.ival;<br />
if(EiC_traceON) {printf("t_short ou t_ushort\n");}<br />
952 break;<br />
953 case t_float: STK[ToP].v.fval = STK[ToP].v.dval;<br />
if(EiC_traceON) {printf("t_float\n");}<br />
954 /*_ case t_struct:<br />
955 case t_union:<br />
956 printf("stoVa1l with struct/union\n");<br />
957 */<br />
958 }<br />
959<br />
960 stoVAL;<br />
961 break;<br />
962 case pushval: pushVAL; if(EiC_traceON) {printf("pushval\n"); }<br />
963 break;<br />
964<br />
965 case eiccall:<br />
966 if(EiC_traceON) {printf("eiccall\n");}<br />
967 if(!((symentry_t*)STK[ToP - 1].v.p.p)->tag) {<br />
968 AdjustTop(6);<br />
969 STK[ToP + 1].v.ival = p;<br />
970 STK[ToP + 1].type = (void*)EiC_CurrentFile; /* save file */<br />
971 STK[ToP + 2].v.p.p = InSt;<br />
972 STK[ToP + 3].v.lval = AR[1] - env->LAR;<br />
973 STK[ToP + 4].v.ival = env->lsp - STK[ToP].v.ival;<br />
974 AR[1] = &env->LAR[env->lsp] /* - STK[ToP].v.ival] */ ;<br />
975 co<strong>de</strong> = ! STK[ToP - 1].v.p.p ? NULL :<br />
976 AR[0][((symentry_t *)<br />
977 STK[ToP - 1].v.p.p)->val.ival].v.p.p;<br />
978<br />
979 if (co<strong>de</strong> == NULL) {<br />
980 if(STK[ToP - 1].v.p.p) {<br />
981 EiC_formatMessage("Link error: un<strong>de</strong>fined function :-><br />
%s\n",<br />
115