Ich muss wissen, ob beim Aufruf einer Klassenmethode in C++ der implizite Zeiger "this" das erste oder das letzte Argument ist, d. h. ob er zuerst oder zuletzt auf den Stapel geschoben wird.
Mit anderen Worten, ich möchte wissen, ob eine Klassenmethode, die aufgerufen wird, vom Compiler als solche angesehen wird:
int foo::bar(foo *const this, int arg1, int arg2);
//or:
int foo::bar(int arg1, int arg2, foo *const this);
Im weiteren Sinne würde dies auch die Frage beantworten, ob G++ diesen Zeiger als letztes oder als erstes verschieben würde. Ich habe Google befragt, aber ich habe nicht viel gefunden.
Und als Randbemerkung: Wenn C++-Funktionen aufgerufen werden, tun sie dasselbe wie C-Funktionen, d. h:
push ebp
mov ebp, esp
Alles in allem: würde eine Klassenmethode, die aufgerufen wird, so aussehen?
; About to call foo::bar.
push dword 0xDEADBEEF
push dword 0x2BADBABE
push dword 0x2454ABCD ; This one is the this ptr for the example.
; this code example would match up if the this ptr is the first argument.
call _ZN3foo3barEpjj
Vielen Dank und herzlichen Dank.
EDIT: um Dinge zu klären, ich bin mit GCC/G++ 4.3