void f(); // 1 void f(int x); // 2 void f(double x); // 3 void f(int * x); // 4 double f(int x, double y); // 5 class Klasa { public: void f(int i, double t); // 6 static void f(int i); // 7 }; int main(){ int x=1; double y=1.1; f(); f(x); f(y); f(&x); f(x,y); Klasa k; k.f(x,y); Klasa::f(x); } | main: push ebp mov ebp, esp and esp, -16 sub esp, 32 mov DWORD PTR [esp+24], 1 fld QWORD PTR .LC0 fstp QWORD PTR [esp+16] call _Z1fv ; (1) mov eax, DWORD PTR [esp+24] mov DWORD PTR [esp], eax call _Z1fi ; (2) fld QWORD PTR [esp+16] fstp QWORD PTR [esp] call _Z1fd ; (3) lea eax, [esp+24] mov DWORD PTR [esp], eax call _Z1fPi ; (4) mov eax, DWORD PTR [esp+24] fld QWORD PTR [esp+16] fstp QWORD PTR [esp+4] mov DWORD PTR [esp], eax call _Z1fid ; (5) fstp st(0) mov eax, DWORD PTR [esp+24] fld QWORD PTR [esp+16] fstp QWORD PTR [esp+8] mov DWORD PTR [esp+4], eax lea eax, [esp+31] mov DWORD PTR [esp], eax call _ZN5Klasa1fEid ; (6) mov eax, DWORD PTR [esp+24] mov DWORD PTR [esp], eax call _ZN5Klasa1fEi ; (7) mov eax, 0 leave ret .LC0: .long 2576980378 .long 1072798105 |
Przykładowy plik C++
Odpowiadający mu plik asemblerowy (GAS)