AGB  ·  Datenschutz  ·  Impressum  







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

FPU Word $133F existiert nicht

Ein Thema von user0 · begonnen am 10. Jul 2007 · letzter Beitrag vom 10. Jul 2007
Antwort Antwort
user0

Registriert seit: 28. Okt 2005
25 Beiträge
 
Delphi 7 Personal
 
#1

FPU Word $133F existiert nicht

  Alt 10. Jul 2007, 11:43
Hallo leute,

ich will für mein Programm die FPU-Exceptions abschalten. Ich habe im Internet mehrfach gelesen, dass das per
Set8087CW($133F); geht. Nur übernimmt der Prozessor diese Einstellung leider nicht.

Ich habe ein Testprogramm geschrieben, dass das FPU-Word auf alle möglichen Einstellungen (0..65535) setzt, und danach prüft, ob die einstellungen übernommen wurden:

Delphi-Quellcode:
...
     function J_Get8087CW: word;
     asm
       FNSTCW result
     end;
     ...
     ListBox_Values.Clear;
     for i := 0 to 65535 do begin
         Set8087CW(i);
         if J_Get8087CW = i then begin
            ListBox_Values.Items.Add('$' + IntToHex(i,4));
         end;
     end;
...
Ausgegeben werden 2048 mögliche einstellungen. $133F ist aber nicht dabei

Weiß jemand warum?

P.S.: Aus $133F wird immer $137F
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: FPU Word $133F existiert nicht

  Alt 10. Jul 2007, 13:32
Hallo,

einige Bits im FPU control word sind reserviert und können nicht geändert werden. Offenbar liefert die FPU beim Auslesen des Wortes zumindest für Bit 6 immer den Zustand "gesetzt".

Gruß Hawkeye
  Mit Zitat antworten Zitat
user0

Registriert seit: 28. Okt 2005
25 Beiträge
 
Delphi 7 Personal
 
#3

Re: FPU Word $133F existiert nicht

  Alt 10. Jul 2007, 16:13
Zitat von Hawkeye219:
Hallo,

einige Bits im FPU control word sind reserviert und können nicht geändert werden. Offenbar liefert die FPU beim Auslesen des Wortes zumindest für Bit 6 immer den Zustand "gesetzt".

Gruß Hawkeye
Vielen Dank!

Ich habe jetzt eine Funktion geschrieben, die nur die Bits umsetzt, die umgesetzt werden sollen, und können:
Delphi-Quellcode:
function MyCWCheck(cw: word): word;
  begin
     result := cw;

     // Errormessages abschalten
     result := (result or (1 shl 0));
     result := (result or (1 shl 1));
     result := (result or (1 shl 2));
     result := (result or (1 shl 3));
     result := (result or (1 shl 4));
     result := (result or (1 shl 5));

     // Präzision auf Extended (64 Bit) stellen
     result := (result or (1 shl 8));
     result := (result or (1 shl 9));

     // "Normal" runden
     result := (result and not (1 shl 10));
     result := (result and not (1 shl 11));
  end;
Damit geht´s.
  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 10:50 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