FPU und Zero Flag?
-
Intel 80x87:
Wie kann man bei der FPU feststellen, ob das Ergebnis der letzten Operation gleich Null war? Ein vernuenftiges Flag gibt es ja anscheinend nicht?
-
Die FPU hat ihr eigenes flag register das man nach eax laden kann.
Ich habe aer leider selber keine beschreibung davon.
-
Soweit, dasz wir dieses Flag-Register in den Akkumulator laden, waren wir auch schon. Allerdings ist dabei kein Bit explizit als Zero-Bit ausgewiesen!
-
so wies in meinen asm-referenzen aussieht gibts auch nichts derartiges...da hilft leider nur ein vergleich mit nem explizit angegebenen Nullwert oder ähnlichem
-
Man sollte solche float werte eh nicht direkt miteinander vergleichen. Der Computer kann diese Werte doch nur nähern (hängt mit dem binärsystem zusammen).
Normalerweise ist ein Wert < e-6 oder so (je nach Programm) gleich 0.
-
Naja...die Null gibts shcon ganz genau...um ganz genau zu sein gibts sogar die +0 und die -0
-
Das ist mir schon klar dass die 0 exakt dargestellt werden kann.
Es ging mir eigentlich darum, dass bei einer komplizierten Gleichung, bei der eigentlich 0 rauskommen müsste, eben ein minimal anderer Wert herauskommt.
-
Das komtm aber ganz stark auf die gleichung an
-
Also ich habe einen Float (ich hoffe mal, ein 4 byte Kommawert nannte sich so ;)) auf St(0) immer folgendermaßen auf 0 getestet:
null DD 0 fcom null fstsw ax sahf jz wert_ist_gleich_null
Ich hoffe mal das hilft.