Ich würde vermuten, dass dies eine Möglichkeit ist, Anwendungen, die es überhaupt nicht nutzen, etwas effizienter zu machen. Hier ist meine Überlegung dazu.
x86-Betriebssysteme (und ich nehme an, auch andere) müssen den FPU-Zustand beim Kontextwechsel speichern. Die meisten Betriebssysteme kümmern sich jedoch nur darum, diesen Zustand zu speichern/wiederherzustellen, nachdem die Anwendung versucht hat, die FPU zum ersten Mal zu verwenden.
Zusätzlich dazu gibt es wahrscheinlich einige grundlegende Codes in der Mathematikbibliothek, die den FPU auf einen vernünftigen Ausgangszustand setzen, wenn die Bibliothek geladen wird.
Also, wenn du überhaupt keinen Mathematikcode einbindest, wird nichts davon passieren. Daher muss das Betriebssystem überhaupt keinen FPU-Zustand speichern/wiederherstellen, was die Kontextwechsel etwas effizienter macht.
Nur eine Vermutung jedoch.
Das gleiche Grundprinzip gilt auch für Nicht-FPU-Fälle (das Grundprinzip war, Anwendungen, die libm nicht verwenden, etwas effizienter zu machen).
Zum Beispiel, wenn es ein Soft-FPU gab, das wahrscheinlich in den frühen Tagen von C war. Dann könnte es viele große (und langsame, wenn es verwendet wurde) Codes verhindern, die unnötigerweise verknüpft werden.
Zusätzlich, wenn nur eine statische Verknüpfung verfügbar ist, dann gilt ein ähnliches Argument, dass es die Ausführungsgrößen und Kompilierzeiten niedrig halten würde.
0 Stimmen
Verwandt: GCC -lm -lz -lrt-Optionen - wovon handeln sie?