Struktury i C++
C++: kodowanie nazw funkcji
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)


Tomasz Kapela, Kraków 2011-2020