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

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

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

Saved successfully!

Ooh no, something went wrong!