Ich arbeite an Software für ein Embedded-System, das keine FPU hat. Ich würde gerne in der Lage sein, diese Software mit einer Software-Fließkomma-Bibliothek auf meinem Desktop zu bauen, um eine realistischere Sicht der Leistung zu erhalten. Hat jemand irgendwelche Ideen, wie man das erreicht?Soft Float auf x86_64
Bisher habe ich mit der Verwendung von -msoft-float
mit gcc nicht viel Fortschritte gemacht. Momentan suche ich nach Klängen. Durch Verwendung der Flags -Xclang -msoft-float -Xclang -no-implicit-float
und Angabe einer Bibliothek, die Implementierungen von Soft-Float-Routinen enthält, kann ich meine Anwendung kompilieren. Wenn ich versuche, es auszuführen, segmentiert es immer. Ich kann das am besten sagen, weil die Bibliotheken, von denen dieses Programm abhängt, nicht mit Soft-Float kompiliert wurden. Die App ist abhängig von gtk, sqlite, expat, gcrypt, einigen internen Bibliotheken und libc.
Ich möchte versuchen, herauszufinden, wie man eine komplette Build-Umgebung mit Soft-Float-Unterstützung bauen. Ich habe versucht, uclibc buildroot und CC
und CXX
zu Clarg binaries, aber das hat nicht funktioniert aufgrund der Anforderungen für das Übersetzen der gcc toolchain (Dinge wie autotools beschweren sich über die Compiler-Version ist inkorrekt). Da ich im neuen Buildroot clang als Compiler verwenden möchte (um Soft-Float-Unterstützung zu haben), sehe ich keinen dringenden Bedarf, gcc zu erstellen. Ist es möglich, dies ohne gcc zu tun?
Ich denke, das ist unmöglich, ohne den Code zu ändern, weil das 'x86_64' ABI erfordert' xmm' anwesend sein Register:
einige interessanten Ideen können in dieser Frage zu finden. Vielleicht funktioniert ein '-Ddouble = mpfr :: real'-Trick mit der 'mpfr'-Bibliothek, die sowieso von' gcc' benötigt wird. – hirschhornsalz
Wie bereits erwähnt, war 'clang' in der Lage, eine Binärdatei ohne Verweise auf die Gleitkommaanweisungen oder -register zu kompilieren. Ich nehme an, meine eigentliche Frage ist, ob es eine Möglichkeit gibt, eine ganze Toolchain mit so etwas zu erstellen. –
War die vorgeschlagene Lösung in Ordnung? –