float simulieren

11/03/2009 - 18:01 von Jens Kallup | Report spam
Hallo,

inzwischen bin ich an die variablen Verwaltung gestossen (bei meinen kleinen
Skriptcompiler).
leider kenne ich mich mit der FPU nicht so gut aus, so dass ich leider zur
Zeit nur Ganzzahlen
behandeln kann ...
um z.B. einen Vergleich zu machen verwende ich folgende Mnemomic:

mov eax, [var1]
cmp eax, 100
jne @nicht_hundert

@nicht_hundert:
...

alle anderen Werte wie das darstellen von GUI-Elementen klappt ganz gut,
da ich entweder zwei Register oder für mich besser, zwei "push"es :

push 100 ; Vorkomma
push 25 ; Nachkomma

verwende.
Wie schaffe ich es also, das obige Beispiel in der Art wie

cmp eax, 100punkt25 (100,25)

zu realisieren?

Vielen vielen Dank für Informationen
Es grüßt Euch
Jens
 

Lesen sie die antworten

#1 Sebastian Biallas
11/03/2009 - 18:23 | Warnen spam
Jens Kallup wrote:
Wie schaffe ich es also, das obige Beispiel in der Art wie

cmp eax, 100punkt25 (100,25)

zu realisieren?



Das kommt drauf an.

Wenn Du wirklich IEEE floats[1] simulieren möchtest, dann mit
cmp eax, 0x42c88000.

Wenn Du Dir ein eigenes Format ausdenkst, dann musst Du Dir halt eine
eigene Darstellung einfallen lassen.

Benke aber auch, dass sich nicht alle Dezimalbrüche (exakt) als binàre
Gleitkommazahlen darstellen lassen.

[1] http://de.wikipedia.org/wiki/IEEE_754

Wenn Du für Deinen Compiler SSE voraussetzt, ist die Handhabung aber
eigentlich nicht schwer. Die xmm Register lassen sich praktisch wie die
normalen Register verwenden, wenn Du nur skalare Größen behandelst.

Gruß,
Sebastian

Ähnliche fragen