Ist dieser Stack Frame richtig?

8

Für eine Frage, die ich tue, habe ich eine Frage zu Stapelrahmen:

Betrachten Sie die folgende Funktion in Nada (eine erfundene Sprache), die in den Vorlesungen verwendete Sprache:

%Vor%

Eine solche Funktion könnte folgendermaßen heißen:

%Vor%

Erklären Sie anhand von Diagrammen Ihre Antwort und erläutern Sie die Abfolge der Ereignisse, wenn der obige Funktionsaufruf ausgeführt wird. Sie zeigen, wie der Stapelrahmen beim Eintritt in die Funktion aufgebaut und beim Verlassen zerstört wird und wie das Basiszeigerregister verwendet wird beim Zugriff auf die Parameter x und y und die lokale Variable z.

Ich habe diese Frage beantwortet und das ist der Stapel, den ich produziert habe:

Ich möchte nur, dass jemand das für mich korrigiert, wenn Teile davon falsch sind ... oder einen neuen Stapelrahmen erzeugen (wenn jemand Zeit dafür hat). Ich werde die Hilfe wirklich schätzen.

    
Mr Teeth 08.06.2011, 01:34
quelle

1 Antwort

1

Das hängt von den Aufrufkonventionen ab.

Aber wenn Sie davon ausgehen, dass es _cdecl Aufrufkonvention verwendet, da Sie einen Basiszeiger erwähnen:

Ссылка

Andere Aufrufkonventionen können Register usw. verwenden. Optimierungen können dies weiter verändern, da der Compiler Inline-Code verwendet, Arten von Dingen aufruft, um den Code für das CPU-Pipelining neu anzuordnen, usw.

    
klhurley 13.04.2012 18:13
quelle