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 />
796 break;<br />
797 case ledouble: leTYPE(dval);<br />
798 break;<br />
799 case eqdouble: eqTYPE(dval);<br />
800 break;<br />
801 case nedouble: neTYPE(dval);<br />
802 break;<br />
803 case gtdouble: gtTYPE(dval);<br />
804 break;<br />
805 case gedouble: geTYPE(dval);<br />
806 break;<br />
807 case lordouble: lorTYPE(dval);<br />
808 break;<br />
809 case landdouble: landTYPE(dval);<br />
810 break;<br />
811 case notdouble: notTYPE(dval);<br />
812 break;<br />
813<br />
814 case double2int: castTYPES(dval, uival, unsigned int);<br />
815 break;<br />
816 case double2long: castTYPES(dval, ulval, unsigned long);<br />
817 break;<br />
818 case double2llong: castTYPES(dval, llval, eic_llong);<br />
819 break;<br />
820 case double2float: castTYPES(dval, fval, float);<br />
821 break;<br />
822<br />
823<br />
824 /*specific pointer stuff */<br />
825 case incptr: STK[ToP].v.p.p = (char *) STK[ToP].v.p.p +<br />
826 InSt[p].val.ival; /*if(EiC_traceON) {printf("incptr "); }*/<br />
827 break;<br />
828 case <strong>de</strong>cptr: STK[ToP].v.p.p = (char *) STK[ToP].v.p.p -<br />
829 InSt[p].val.ival; /*if(EiC_traceON) {printf("<strong>de</strong>cptr "); }*/<br />
830 break;<br />
831 case lda:<br />
832 #if 0<br />
833 STK[ToP].v.p = AR[1][InSt[p].val.ival].v.p;<br />
834 STK[ToP].v.p.p = (char*)STK[ToP].v.p.sp + InSt[p].ext;<br />
835 STK[ToP].v.p.sp = STK[ToP].v.p.p;<br />
836 if(EiC_traceON) {printf("lda if 0\n"); }<br />
837 #else<br />
838<br />
839 {<br />
840 if(EiC_traceON) {printf("lda if non 0\n"); }<br />
841 ptr_t *q = &AR[1][InSt[p].val.ival].v.p;<br />
842 ptr_t *a = &STK[ToP].v.p;<br />
843<br />
844 a->p = a->sp = (char*)q->sp + InSt[p].ext;<br />
845 a->ep = q->ep;<br />
846<br />
847 if(vp) { /* patch previous lda assignment */<br />
848 ((ptr_t*)vp)->ep = (char*)a->p;<br />
849 }<br />
850 /* Take advantage of the fact that the next InSt<br />
851 * has the location of where `a' is to be stored.<br />
852 */<br />
853 vp = &AR[1][InSt[p+1].val.ival].v.p;<br />
854<br />
855 }<br />
856<br />
857 #endif<br />
858<br />
859 break;<br />
860 case ixa:<br />
861 ToP--;<br />
862 STK[ToP].v.p.p = (char *) STK[ToP].v.p.p +<br />
STK[ToP+1].v.ival*InSt[p].val.ival;<br />
113