In Bezug auf C ++ und Assembly, was ist ebp + 8?

8

Ich habe den folgenden C ++ Code:

%Vor%

Das Folgende ist die disassemblierte Version der Funktion foo() :

%Vor%

Wie ich weiß, ist ebp+X für Zugriffsfunktionsargumente, aber für foo gibt es nichts Vergleichbares, also warum benutzt der Compiler es? Es scheint, als wäre es der erste Parameter für std::make_tuple() .

BEARBEITEN:

Ich verwende keine Optimierung, ich möchte nur RE lernen.

Teil des Hauptteils in der Versammlung:

%Vor%     
j.Doe 03.01.2017, 20:15
quelle

1 Antwort

12

Die Aufrufkonvention gibt an, dass nicht-triviale Objekte über einen versteckten Zeiger zurückgegeben werden, der als Argument übergeben wird. Das siehst du. Technisch gesehen ist Ihr Code wie folgt implementiert:

%Vor%     
Jester 03.01.2017, 20:22
quelle