@Amateurprofi: was ich schrieb, war der Pascal-Code und du hattest ja schon die optimiertere Version.
In Pascal muß man ja z.B. immer das ergebnis zuweisen, auch wenn es eigentlich sinnlos wäre ... in
ASM könnte man es gleich optimiert schreiben, aber in Pascal schreibt man es halt erstmal hin, damit der Compiler nicht mekert und läßt es sich dann wieder wegoptimieren
z.B. beim Integer:
X wir im EAX übergeben und das Result liegt auch im EAX ... also wäre
Result := X; nicht nötig.
Rate also mal warum ich da oben was
fett geschrieben hatte
und bei den realen Werten macht die ganze Prüfung halt fabs ... na ja, wenn wann den aufbau der Typen kennt, dann weiß man, daß es da wirklich ein "NegativBit" gibt, welches man einfach löschen kann.
aber es ginge noch schneller
Delphi-Quellcode:
// abs für 'nen double
mov eax, [adresse+4]
and eax, $7fffffff
mov [adresse+4], eax
[add]
CDQ
Convert Double to Quad
EDX:EAX := EAX (signed)
[edit]
zu langsam -.-''