Verwendung von Software Fließkomma auf x86 Linux

8

Ist es (leicht) möglich, einen Software-Gleitkomma-Punkt auf i386-Linux zu verwenden, ohne dass bei jedem Aufruf die Kosten des Einfangens in den Kernel entstehen? Ich habe -smsoft-float ausprobiert, aber es scheint, dass die normalen (ubuntu) C-Bibliotheken keine FP-Bibliothek enthalten:

%Vor%     
bdonlan 19.06.2009, 15:36
quelle

4 Antworten

4

Wenn Sie Ihre gesamte Toolchain nicht manuell per Bootstrap erstellen möchten, können Sie mit uclibc beginnen toolchain (die i386-Version, stelle ich mir vor) - Soft-Float wird (AFAIK) nicht direkt für die "native" Kompilierung auf Debian und Derivaten unterstützt, sondern kann über den "embedded" -Ansatz der uclibc-Toolchain verwendet werden.

    
Alex Martelli 19.06.2009, 15:44
quelle
6

Es ist überraschend, dass gcc dies nicht nativ unterstützt, da der Code in der Quelle in einem Verzeichnis mit dem Namen soft-fp eindeutig verfügbar ist. Es ist möglich, diese Bibliothek manuell zu kompilieren:

%Vor%

Es gibt einige c-Dateien, die aufgrund von Fehlern nicht kompiliert werden, aber die Mehrheit kompiliert. Nach dem Kopieren von libsoft-fp.a in das Verzeichnis mit unseren Quelldateien kompilieren sie nun mit -msoft-float :

%Vor%

Eine schnelle Inspektion mit

%Vor%

zeigt, dass erwartungsgemäß keine x87 Fließkomma-Anweisungen aufgerufen werden und der Code auch deutlich langsamer abläuft, in meinem Beispiel um einen Faktor von 8, der sehr viel Unterteilung verwendet.

Hinweis: Ich hätte es vorgezogen, die Soft-Float-Bibliothek mit

zu kompilieren %Vor%

aber das führt zu vielen Fehlermeldungen wie

%Vor%

Scheint als wäre die i386 Version nicht gut gepflegt, da st(1) auf eines der x87 Register zeigt, die offensichtlich nicht verfügbar sind, wenn -msoft-float verwendet wird. Seltsam oder glücklicherweise kompiliert die arm version in i386 und scheint gut zu funktionieren.

    
user1059432 22.11.2011 13:28
quelle
4

GCC unterstützt dies nicht ohne einige zusätzliche Bibliotheken. Aus der 386-Dokumentation :

  

-msoft-float Generiert Ausgaben, die Bibliotheksaufrufe für Floating enthalten   Punkt. Warnung : das Erforderliche   Bibliotheken sind nicht Teil von GCC.   Normalerweise sind die Einrichtungen des   Maschine üblichen C-Compiler verwendet werden,   aber das kann nicht direkt in gemacht werden   Kreuz-Kompilierung. Du musst deine machen   eigene Arrangements zur Verfügung zu stellen   Bibliotheksfunktionen für   Kreuz-Kompilierung.

     

Auf Maschinen, auf denen eine Funktion zurückkehrt   Fließkomma ergibt sich in der 80387   Registerstapel, etwas Fließkomma   Opcodes können auch dann ausgegeben werden, wenn   -msoft-float wird verwendet

Sie können -mfpmath = unit auch nicht auf "none" setzen, es muss sse, 387 oder beides sein.

Laut dieser Gnu-Wiki-Seite gibt es jedoch fp-soft und ieee . Es gibt auch SoftFloat .

(Für ARM gibt es -mfloat-abi = softfp, aber es scheint nicht, dass etwas Ähnliches für 386 SX verfügbar ist).

Es scheint nicht so, als ob tcc Software-Gleitkommazahlen unterstützt.

Viel Glück bei der Suche nach einer Bibliothek, die für Sie funktioniert.

    
Alexander 08.07.2011 21:25
quelle
0

Heute,

Wenn Sie nicht auf eine Plattform abzielen, die keine integrierte FP-Unterstützung bietet, kann ich mir keinen Grund vorstellen, warum Sie die FP-Unterstützung emulieren sollten.

Hat Ihre x386-Plattform keine externe FPU-Unterstützung? Schade, es ist kein x486 mit eingebauter FPU!

Nach meiner Erfahrung ist jede weiche Emulation wesentlich langsamer als ihre Hardware-Entsprechung.

Deshalb habe ich ein Paket in Ada geschrieben, um die Onboard-68k-FPU zu verwenden, anstatt die Soft-Emulation des Compiler-Herstellers zu dieser Zeit zu verwenden. Sie haben es tatsächlich in ihrem Compiler gebündelt.

Bearbeiten: Habe gerade deinen Kommentar unten gesehen. Hmmm, wenn Sie keine vollständige FP-Unterstützung benötigen, können Sie Ihre eigenen mathematischen Funktionen für die wenigen mathematischen Funktionen verwenden, die Sie benötigen? Wie das Ada-Paket, das ich erwähnt habe, angefangen hat.

HTH

Prost,

    
Rob Wells 19.06.2009 15:45
quelle

Tags und Links