AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Was bedeutet FPU-Status?

Ein Thema von Cöster · begonnen am 3. Feb 2007 · letzter Beitrag vom 6. Feb 2007
Antwort Antwort
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#1

Was bedeutet FPU-Status?

  Alt 3. Feb 2007, 18:50
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?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Was bedeutet FPU-Status?

  Alt 3. Feb 2007, 20:59
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
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Was bedeutet FPU-Status?

  Alt 3. Feb 2007, 21:43
Ah jo, nun seh ich auch, dass Delphi mir nicht nur das CPU-, sondern auch das FPU-Fenster bietet
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:
TEST   AH,$45
Hier werden ein paar Status-Bits der FPU (das "FPU Control Word" 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.
Aber was sagt denn das Parity Flag über das Verhältnis von X und Y aus?
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Was bedeutet FPU-Status?

  Alt 4. Feb 2007, 05:22
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.
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Was bedeutet FPU-Status?

  Alt 5. Feb 2007, 15:45
Zitat von Robert Marquardt:
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.
Ich versteh nicht ganz, was das mit meiner Frage zu tun hat. Welche Werte im FPU Control Word gespeichert sind, kann ich - wie ich jetzt weiß - auch bequem über das FPU-Fenster einsehen.

Meine Frage aus Beitrag #3 ist weiterhin unbeantwortet (oder soll ich dafür extra nen neuen Beitrag aufmachen?): Warum heißt es
Code:
TEST   AH,$45
und nicht
Code:
TEST   AH,$41
?
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Was bedeutet FPU-Status?

  Alt 5. Feb 2007, 19:14
Hi,

vielleicht findest du auf dieser Seite eine Antwort auf deine Frage.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Was bedeutet FPU-Status?

  Alt 5. Feb 2007, 19:33
Zitat von Hawkeye219:
Hi,

vielleicht findest du auf dieser Seite eine Antwort auf deine Frage.

Gruß Hawkeye
Leider nicht, aber trotzdem danke für den Link, denn die Seite könnte mir bei anderer Gelegenheit vll nochmal behilflich sein.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#8

Re: Was bedeutet FPU-Status?

  Alt 5. Feb 2007, 19:40
Also auf der Seite ist bei FCOMI genau beschrieben welche Flags wann gesetzt werden. ZF = Zero Flag, PF = Parity Flag und CF = Carry Flag.
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Was bedeutet FPU-Status?

  Alt 5. Feb 2007, 20:06
Zitat von Robert Marquardt:
Also auf der Seite ist bei FCOMI genau beschrieben welche Flags wann gesetzt werden. ZF = Zero Flag, PF = Parity Flag und CF = Carry Flag.
In Hypot wird FCOM aufgerufen. Dort wird das Parity Flag der FPU (=C2) nur dann gesetzt, wenn der Vergleich nicht möglich ist. Aber in dem Fall sind die beiden anderen Flags (C3=ZF und C0=CF) ebenfalls gesetzt. C0, C2 und C3 sind die drei Flags, die durch TEST $45 geprüft werden. TEST $41 würde nur C0 und C3 prüfen, was in jedem Fall zu den selben Ergebnissen führen würde.
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?
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#10

Re: Was bedeutet FPU-Status?

  Alt 6. Feb 2007, 04:25
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz