Autor: MiW (miw_at_zeus.polsl.gliwice.pl)
Data: Sun 30 Nov 2003 - 10:14:48 MET
> Stos FPU ma ograniczoną pojemność i nie ostrzega Cię, gdy wykonująć FLD
> tracisz ósmą pozycję na stosie :-)
Alez ja doskonale o tym wiem :)
> Jeżeli wykonujesz tę sekwencję wiele razy, to zawsze zostawiasz jeden
> element na stosie. Poniżej masz swój kod z komentarzami zawierającymi stan
> stosu FPU od pozycji nr 0 w dół.
>
> fld qword ptr [ebx + 48] ;A
> fld qword ptr [ebx + 8] ;B, A
> fld ST(0) ;B, B, A
> fadd ST(0),ST(2) ;B+A, B, A
> fstp qword ptr tmp [8] ;B, A
> fsub ST(0),ST(1) ;B-A, A
> fstp qword ptr tmp [48]; A
>
> Widzisz! Zostaje A na stosie, a nie powinno nic zostać ...
> Proponuję następującą zmianę:
Wycialem taki 'luzny' fragment. Ten element byl dalej wykorzystywany. Na
stosie nic nie zostawalo (sprawdzone debuggerem).
-- pzdr. MiW
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Wed 19 May 2004 - 11:46:32 MET DST