Einfachste Weg, um entfernen Sie etwas von dem FPU-stack

Habe ich einige Probleme in letzter Zeit mit FPU-stack-overflows. Ich es geschafft, es zu verfolgen zurück zu einem buggy-Bibliothek-Funktion, schiebt sich eine Müll Wert auf den FPU-stack jedes mal, wenn es aufgerufen wird und niemals reinigt es.

Glücklicherweise ist dies leicht reproduzierbar und ich weiß genau, welche Bedingungen verursachen. Kann ich drop ein block von inline-ASM in der routine ruft diese routine an die pop-top-Wert wieder aus dem FPU-stack... außer ich weiß nicht ganz, was zu schreiben. Meine ASM-fu ist fair zu middlin', aber nicht , dass stark.

Also, was ist der einfachste Weg, um loszuwerden, die top-Werte auf dem FPU-stack in x86 assembly, vorausgesetzt, es ist Datenmüll und ich kümmern sich nicht über den Wert?

  • Für das Protokoll, x87, veraltet ist. Moderne-code wird normalerweise der XMM-Register auch für die Skalare FP Mathematik, mit Anweisungen wie addss (Skalare single-precision) oder addsd (skalaren double). Blick auf die vom compiler generierten code bei der FP Funktion für Beispiele.
Schreibe einen Kommentar