pytanie dziwne jak na ta grupe ;-)... asembler x86 dla FPU

Autor: MiW (miw_at_zeus.polsl.gliwice.pl)
Data: Sat 29 Nov 2003 - 22:58:40 MET


Witam !

Jestem ciekaw, czy ktos udzielilby mi odpowiedzi, bo jeszcze takiego nie
spotkalem :)

Pisalem jakis czas temu smieszny projekcik w asemblerze (konkretnie
optymalizacje fragmentu kodu IJG kodera JPEGa) operujacy w znakomitej
wiekszosci na operacjach FPU (x87... jak zwal tak zwal). Problemik objawial
sie po kilku sekwencjach typu:

 fld qword ptr [ebx + 48]
  fld qword ptr [ebx + 8]
  fld ST(0)
  fadd ST(0),ST(2)
  fstp qword ptr tmp [8]
  fsub ST(0),ST(1)
  fstp qword ptr tmp [48]

Mianowicie nalezalo zresetowac koproca (finit), bo dawal dziwne wyniki
nastepnych operacji. Ilosc operacji przed kolejnym finitem ustalalem
doswiadczalnie ;-), bo nie miala wiekszego zwiazku z iloscia rozkazow (od
kilkunastu do >50).

Co wiecej - nie tylko ja mialem ten problem i wydawalo sie, ze nie dotyczy
to np tylko procow AMD (ktore jak wiadomo nie sa tak calkowicie i w 100%
zgodne z intel x86), bo sam mam Durona, a problem wystepuje rowniez na P4.

Moze mi ktos powiedziec, dlaczego ?
Hint: nie sa to zle ustawione flagi, bo ustawiane sa na nowo po kazdej
operacji zapisujacej cos do jakiegokolwiek rejestru FPU...

-- 
pzdr.
MiW


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Wed 19 May 2004 - 11:46:23 MET DST