Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Überlauf bei Berechnung erkennen

  Alt 22. Mai 2008, 21:57
jup, erstmal 'ne fixe Größe
hab einen Integer mit fixer Größe geplant und einen Float ... die verhalten sich speichertechnisch halt genauso wie eine normale Variable.
und dann soll's noch 'nen variablen Float geben.


Es ist 2-er-Komplement ... halt "nur" 'ner Erweiterung des "normalen" Integers, mit des selben Definition.
Wolte halt mal was anderes erschaffen, als sonst auf dem Markt ist

bei variabler Länge würde ich auch einfach neues "Feld" anlegen und mit dem Überlaufwert füllen,
aber hier geht es ja nicht.

und nein, bei 2-er-Komplement gibt es rechenmäßig auch Überlaufwerte, welche keinen Überlauf darstellen ... das ist ja des Kern meines Problemes.
bei den Berechnungen steht nach dem "#" der Wert im Überlaufregister und der ist nicht immer null.

ich muß halt nur irgendwie eine formel aufstellen, die rüft, wann welche Werte erlaubt sind.

Data[High(Data)] and $80000000 <> 0
stellt wirklich das
LongInt(Data[High(Data)]) < 0
dar, nur ist die Übersetzung kürzer

Delphi-Quellcode:
// Data[15] and $80000000 <> 0
// LongWord(Data[15]) and $80000000 <> 0
MOV EAX, Data[15]
AND EAX, $80000000
CMP EAX, 0 // könnte man eigentlich weglassen ... macht Delphi aber nicht
JNZ ...

// LongInt(Data[15]) < 0
CMP Data[15], 0
JS ...

@isNegative = Tippfehler (hab es halt versucht der Verständnis halber zu verkürzen ... hab dort ja eigentlich das LongInt-Geeiere )
$2B or not $2B
  Mit Zitat antworten Zitat