Free Pascal verfügt über eine "SoftFPU"
Unit, welche es letztendlich erlauben soll 32, 64, 80 und 128 Bit Operationen in Software durchzuführen (mit dazugehörigen Datentypen). Die
Unit soll letztendlich dazu verwendet werden, um von Systemen, die keinen 80-Bit Datentyp unterstützten (x86_64, ARM), auf Systeme zu kompilieren, die das tun (x86). Das Problem ist nämlich, dass Konstanten vom Compiler immer mit der höchsten für die Zielplattform verfügbaren Genauigkeit evaluiert werden sollten. Von x86 nach x86_64 ist das kein Problem, da der Compiler dann einfach nur mit der 64-Bit Genauigkeit evaluiert, aber von x86_64 nach x86 ist das problematisch, da ersterer nur bis 64-Bit Genauigkeit anbietet. Dies kann im Worstcase zu Programmen führen, die sich unterschiedlich verhalten je nachdem ob sie nativ unter x86 oder cross kompiliert wurden. Das darf natürlich nicht sein.
Die
Unit basiert auf C-Code und ist leider noch nicht komplett konvertiert (nur die 32 und 64 Bit Operationen sind bereits konvertiert).
Gruß,
Sven