Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: [ASM x86] Absolutwert eines vorzeichenbehafteten Integers

  Alt 20. Apr 2011, 16:33
nicht ganz, wobei dieses Bit schon richtig ist, aber die negativen Werte sind noch um 1 verschoben. ( die 0 braucht man ja nicht doppelt, da -0 = +0 )

wenn X negativ,
dann X negieren oder X := X xor -1 {$FFFFFFFF} .


oder so wie Delphi es delphi macht
Delphi-Quellcode:
//mov EAX, X
cdq
xor EAX, EDX { wenn X negativ, dann ist EDX = -1,            }
              { ansonsten ist es 0 und es würde nix passieren }
sub EAX, EDX { wenn X negativ, dann -(-1) aka +1, ansonsten -0 aka nichts }
//mov X, EAX
Da sollte man nur beachten, daß man hierfür ein freies EDX benötigt und der Wert in EAX liegen muß,

ansontens kommt man wohl nicht um die ASM-Variante des IF-Konstrukts nicht herum.

[add]
das vergessene SUB eingefügt
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (20. Apr 2011 um 17:48 Uhr)
  Mit Zitat antworten Zitat