Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Nicht nachvollziehbare Invalid floating point operation

  Alt 29. Okt 2010, 23:53
wird direkt durch den Compiler ausgerechnet und dann direkt an Y übergeben, als Konstante:
Delphi-Quellcode:
Y := Round(1E200);
// oder
Y := 123 * 1E200;
wird erst zur Laufzeit ausgerechnet:
Delphi-Quellcode:
X := 1E200;

Y := Round(X);
// oder
Y := 123 * X;


Code:
Unit9.pas.29: Y := Round(1E200);
004B32BC 33C0             xor eax,eax
004B32BE 8945E0           mov [ebp-$20],eax
004B32C1 C745E400000080   mov [ebp-$1c],$80000000
004B32C8 66C745E83EC0     mov word ptr [ebp-$18],$c03e


Unit9.pas.32: X := 1E200;
004B32E9 C745F06DD112BB  mov [ebp-$10],$bb12d16d
004B32F0 C745F4BEC638A7   mov [ebp-$0c],$a738c6be
004B32F7 66C745F89742     mov word ptr [ebp-$08],$4297
Unit9.pas.33: Y := Round(X);
004B32FD DB6DF0           fld tbyte ptr [ebp-$10]
004B3300 E8E312F5FF      call @ROUND
004B3305 8945D4           mov [ebp-$2c],eax
004B3308 8955D8           mov [ebp-$28],edx
004B330B DF6DD4           fild qword ptr [ebp-$2c]
004B330E DB7DE0           fstp tbyte ptr [ebp-$20]
004B3311 9B              wait
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat