Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Cheebi am 26. March 2007, 23:48

Titel: Gleitkommaberechnung
Beitrag von: Cheebi am 26. March 2007, 23:48
Hi,

sagt mal, kann ich nicht eine einfach Division wie zum Beispiel 5 / 2 im OS benutzen, ohne auf die FPU zurückgreifen zu müssen?
Weil bei mir ergibt folgender Code immer Null:

  sGDTInfo->ProzentBelegt = (int)(((AnzEintr / MAX_DESCS)*100));

Kann dafür kein richtiges Ergebnis kommen, wenn ich nicht irgendetwas spezielles aktiviere?

Gruß Cheebi
Titel: Re: Gleitkommaberechnung
Beitrag von: FreakyPenguin am 27. March 2007, 00:38
  sGDTInfo->ProzentBelegt = (int)(((AnzEintr / MAX_DESCS)*100));

Warum machst du es nicht einfach so:
  sGDTInfo->ProzentBelegt = (int)((AnzEintr * 100/ MAX_DESCS));
Die Klammern um AnzEintr / MAX_DESCS waren ja eh unnötig. Und da es alles Punkt-Operationen sind, kannst du sie ja in der Reihenfolge beliebig vertauschen.
Titel: Re: Gleitkommaberechnung
Beitrag von: Cheebi am 27. March 2007, 18:53
Hi,

ich weiß nu, was das Problem war und warum immer 0 als Ergebnis kam... Es ist nämlich nicht egal, ob ich die Punktrechenarten vertausche. Da ich die FPU nicht benutze, ist die Division in C trotzdem eine normale Division, weil sie ja später in ASM als DIV Befehl auftritt. Deshalb ist die Division durch MAX_DESCS erst nach der Multiplikation mit 100 durchzuführen, sonst kommt ein Wert < 1 raus, der dann einfach als 0 interpretiert wird. (Nachkommastellen werden gelöscht)
Und 0 * 100 ist nunmal 0; zumindest in meiner Region^^...

Aber ich habe in dieser Situation gleich nach FPU-Programming ausschaugehalten. Habe aber wenig (bis gar nichts) gefunden. Habt ihr Links zur FPU-Programmierung?

Gruß,

 Cheebi
Titel: Re: Gleitkommaberechnung
Beitrag von: Jidder am 27. March 2007, 19:00
http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH14/CH14-1.html
Titel: Re: Gleitkommaberechnung
Beitrag von: Cheebi am 30. March 2007, 00:29
hihi.... hab selbst was tolles gefunden:

http://www.homix-online.de/Tutorials/FPU1.php