Autor Beitrag
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Fr 07.09.07 14:05 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 07.09.07 20: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.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Allesquarks Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: So 09.09.07 19: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.