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 />

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

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

Saved successfully!

Ooh no, something went wrong!