Entwickler-Ecke
Algorithmen, Optimierung und Assembler - signifikante Stellen bei fistp
Allesquarks - Fr 07.09.07 13:05
Titel: signifikante Stellen bei fistp
Will aus dem Coprozessor eine Zahl in mein eigenes Format umwandeln. Wollte jetzt über fxtract die Zahl in Mantisse und Exponent zerlegen und anschließend diese speichern über fistp. Nach IEEE 754 habe ich doch aber 64 signifikante Stellen und fistp qword ptr [eax]; ist ja dann ein Integer, der im ja ien Vorzeichenbit hat also nur 63 signifikante Stellen verliere ich also eine oder wird das Vorzeichen hier gar nicht berücksichtigt und die 64 signifikanten Stellen korrekt abgespeichert und die richtige Interpretation der Daten mir überlassen?
BenBE - Fr 07.09.07 19:01
FISTP = Floatingpoint Integer STore and Push.
Heißt also: Gleitkommazahl in einen Integer umwandeln (Int64 (mit Vorzeichen!!!) und dabei auf Ganzzahlen runden.
Mit der Mantisse hat das erstmal nicht viel zu tun. Ach ja: Es wird bei FISTP gegen 0 gerundet (Trunc) wenn ich das richtig in Erinnerung hatte.
Ferner musst Du beachten, dass FISTP die 80 Bit (1 Sign, IIRC 12\13 Exponent, Rest Mantisse) noch skalieren muss.
Schreib Dir lieber eine Routine, die IEEE754 direkt lesen kann und bastel Dir die Umwandlung in dein eigenes Format schnell selber.
P.S.: IEEE754 sagt aus, dass das 1, der Mantisse NICHT mitgespeichert wurd (weil normierte Zahlen). Denormalisiert ist z.B. die 0: Diese wird über bestimmte Parameter-Kombinationen (Sign undef, Exponent = 0, Mantisse 0) definiert.
Allesquarks - So 09.09.07 18:49
Schon klar deshalb ja auch erstmal fxtract oder so. Dachte/hoffte halt nur dass wenn es schon so einen tollen Befehl gibt, dass ein Stück Hardware für Mathematik dabei lieber alle Stellen erhält anstatt eines Vorzeichens.
Bei Schreiben in den coprozessor hab ich das halt schon selber gemacht und deshalb auch meine Frage, denn das sind schon ganz schön viele Zeilen assembler geworden und außerdem halt extrem umständlich wegen der unhandlichen Ausrichtung im Speicher und dass ich das Bias nicht kannte.
Nun ja Schade aber danke für die Antwort.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!