Hi!
Den Funktionsaufruf
Sqrt(1000000);
wandelt Delphi in folgenden Assembler-Code um:
Code:
PUSH $00004012
PUSH $F4240000
PUSH $00
CALL Sqrt
FSTP ST(0)
Durch die drei Pushes wird wahrscheinlich die 1000000 auf dem Stack abgelegt. 1000000 ist hexadezimal dargestellt allerdings nur $F4240. Der Rest wird wahrscheinlich zusätzlich gepusht, weil Sqrt einen 10 Byte großen Extended-Parameter erwartet. Hier werden aber insgesamt 12 Bytes gepusht (da bei der dritten Zeile ja eig. $00000000 gepusht wird).
Welche Zahl wird in der Funktion Sqrt als Parameter vom Stack genommen wird? $4012F42400000000? Wie kommt man davon dann auf 1000000?
Kurz: Kann mir jemand die drei Pushes erklären?