Einzelnen Beitrag anzeigen

Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#1

[asm] Übergabe eines Extended-Parameters

  Alt 3. Feb 2007, 09:32
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?
  Mit Zitat antworten Zitat