Einzelnen Beitrag anzeigen

Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Delphi -> Asm -> Stackproblem?

  Alt 4. Aug 2007, 22:26
Zitat von sirius:
Sieht doch alles gut aus. Wo genau ist das Problem?

Der Stackpointer liegt in ebp und wird am Ende durch mov esp,ebp wieder zurückgesetzt.
Die 9 (bzw. 18) pushs dienen nur dazu um Speicherplatz für lokale Variablen (auch versteckte lokale Variablen) zu schaffen und die mit nil zu initialisieren.

Edit: dass hier: "8)" ist "acht)"
Edit2: "self" legt man sich üblicherweise in ebx (da dieses register von andeen Funktionen nicht verändert werden darf). Die Übergabe von self erfolgt trotzdem noch in eax. Wenn man allerdings aus einer Methode eine Methode derselben Klasse aufruft ist natürlich in ebx und eax dasselbe drin.
achso, moment ich glaub ich weiss was du meinst ... ich war da zu schnell und dachte, das es ein fehler sein muß, wenn der nicht in der richtigen reihenfolge popt wie er gepusht hat ... aber man sieht hier nix, da ja der stack pointer am schluß überschrieben wird, und es sein könnte, das alles richtig ist - bzw. das der asm code richtig ist, und der fehler wo anders liegt ...

also wieder erneut aufmachen und den fehler suchen ... den fakt ist, der gepushte EBX Wert (also das self) ist zum beginn der funktion richtig, aber der gepopte EBX wert ist dann falsch, deshalb funkt dann der rest aus der aufrufenden funktion dann nicht mehr
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat