sheel
I love Asm
Das mit den Aufrufkonventionen?
Ja, warum nicht?
Etwas wichtiges muss man aber beachten: Klasseninterne Methoden haben eine eigene CC:
thiscall
Der Grund: Die Methoden werden zuerst unabhängig vom tatsächlichen Objekt kompiliert und bekommen dann beim Aufruf einen Pointer auf das betroffene Objekt als zusätzlichen "Parameter" mit.
thiscall ist zu allem Überfluss auch noch je nach Compiler anders.
Bei Visual Studio, wenn die Funktion eine fixe Parameteranzahl hat:
Wie stdcall, die Objektadresse muss aber vor dem Aufruf in ECX rein.
Bei Visual Studio, wenn die Funktion variable Parameterlistenlängen hat:
Wie cdecl die Objektadresse muss auch hier vor dem Aufruf in ECX rein.
Bei gcc:
Wie cdecl, die Adresse wird aber wie ein normaler Parameter mit den anderen in den Stack geschoben.
Und zwar als letztes push (bzw. im C++-Quelltext wäre das der erste Parameter).
Gruß
Ja, warum nicht?
Etwas wichtiges muss man aber beachten: Klasseninterne Methoden haben eine eigene CC:
thiscall
Der Grund: Die Methoden werden zuerst unabhängig vom tatsächlichen Objekt kompiliert und bekommen dann beim Aufruf einen Pointer auf das betroffene Objekt als zusätzlichen "Parameter" mit.
thiscall ist zu allem Überfluss auch noch je nach Compiler anders.
Bei Visual Studio, wenn die Funktion eine fixe Parameteranzahl hat:
Wie stdcall, die Objektadresse muss aber vor dem Aufruf in ECX rein.
Bei Visual Studio, wenn die Funktion variable Parameterlistenlängen hat:
Wie cdecl die Objektadresse muss auch hier vor dem Aufruf in ECX rein.
Bei gcc:
Wie cdecl, die Adresse wird aber wie ein normaler Parameter mit den anderen in den Stack geschoben.
Und zwar als letztes push (bzw. im C++-Quelltext wäre das der erste Parameter).
Gruß