![]() |
Was bedeutet FPU-Status?
Hi!
Auf die Frage in der Überschrift konnte ich nirgends eine Antwort finden. Ich vermute, dass damit die Flags in der FPU gemeint sind. Aber welche gibt es da und in welcher Reihenfolge werden sie gespeichert? In der CPU gibt es 17 Flags, in der FPU aber nur 16, da sie in einen 16bit-Register passen. Welches Flag gibt es hier weniger? |
Re: Was bedeutet FPU-Status?
Hallo Christian,
kein Wunder, dass du nichts richtiges findest, wenn du nach FPU-Status suchst. Der terminus technicus ist FPU Control Word und die Status-Bits (genauer: exception status bits) sind ein Teil davon. Das genaue Register-Layout muss dich nicht interessieren (wenn doch, gib Bescheid), da du die entsprechenden Bits in Delphi über die Konstanten und Funktionen (SetExceptionMask) der Math-Unit manipulierst. Der Einstieg in die Online Hilfe ist bei mir (D7) "FPU-Steuerung". Grüße vom marabu |
Re: Was bedeutet FPU-Status?
Ah jo, nun seh ich auch, dass Delphi mir nicht nur das CPU-, sondern auch das FPU-Fenster bietet :-D
Da kann ich ja auch selber sehen, wie die Status-Flags angeordnet sind. Die Frage hab ich mir gestellt, als ich versucht hab, die Implementierung von Hypot nachzuvollziehen. Eine Stelle hab ich aber nicht ganz verstanden:
Code:
Hier werden ein paar Status-Bits der FPU (das "FPU Control Word" :wink: ist unter AX gespeichert) ausgewertet, um nachher zu prüfen, ob der Parameter X größer ist als Y. Wegen der $45 handelt es sich bei diesen Flags um das Zero, das Parity und das Carry Flag. Gesetzt wurden diese Flags vorher durch den Vergleich X - Y. Nur wenn alle drei Flags den Wert 0 enthalten, soll das bedeuten, dass X > Y. Dass eine Aktivierung des Zero Flags X=Y bedeutet und eine Aktivierung des Carry Flags X<Y, verstehe ich.
TEST AH,$45
Aber was sagt denn das Parity Flag über das Verhältnis von X und Y aus? |
Re: Was bedeutet FPU-Status?
Die JCL hat dazu eine Unit, die umfassnde Kontrolle ermoeglicht. Gelegentlich gibt es Komponenten, die das FPU-Control Word umstellen und danach funktioniert das Delphi-Programm nicht mehr richtig. Die JCL Unit ermoeglicht dann das man das FPU-Control Word sichert und restauriert.
|
Re: Was bedeutet FPU-Status?
Zitat:
Meine Frage aus Beitrag #3 ist weiterhin unbeantwortet (oder soll ich dafür extra nen neuen Beitrag aufmachen?): Warum heißt es
Code:
und nicht
TEST AH,$45
Code:
?
TEST AH,$41
|
Re: Was bedeutet FPU-Status?
|
Re: Was bedeutet FPU-Status?
Zitat:
|
Re: Was bedeutet FPU-Status?
Also auf der Seite ist bei FCOMI genau beschrieben welche Flags wann gesetzt werden. ZF = Zero Flag, PF = Parity Flag und CF = Carry Flag.
|
Re: Was bedeutet FPU-Status?
Zitat:
Ich werd mich wohl damit abfinden müssen, dass egal ist, was ob nun alle drei oder nur 2 geprüft werden, da es zum gleichen Ergebnis führt. Oder könnte es sein, dass $45 aus optimierungstechnischen Gründen zu bevorzugen ist, weil es vll schneller ist, 3 Flags zu prüfen als nur 2? |
Re: Was bedeutet FPU-Status?
Es ist voellig egal wieviele Flags geprueft werden. Das ist alles gleich schnell. Die Aussage der Tabelle ist halt das alle drei Flags 0 sind fuer A > B.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz