Was ist genau der Basiszeiger und der Stapelzeiger? Worauf weisen sie hin?

Verwendendieses Beispiel aus Wikipedia, in der DrawSquare () DrawLine () aufruft,

(Beachten Sie, dass dieses Diagramm unten hohe Adressen und oben niedrige Adressen aufweist.)

Könnte mir jemand was erklärenebp undesp sind in diesem Zusammenhang?

Aus meiner Sicht würde ich sagen, dass der Stapelzeiger immer auf den Anfang des Stapels und der Basiszeiger auf den Anfang der aktuellen Funktion zeigt. Oder was?

edit: ich meine das im zusammenhang mit windows-programmen

edit2: Und wie geht das?eip auch arbeiten?

edit3: Ich habe den folgenden Code von MSVC ++:

var_C= dword ptr -0Ch
var_8= dword ptr -8
var_4= dword ptr -4
hInstance= dword ptr  8
hPrevInstance= dword ptr  0Ch
lpCmdLine= dword ptr  10h
nShowCmd= dword ptr  14h

Alle von ihnen scheinen Dwords zu sein und nehmen daher jeweils 4 Bytes ein. So kann ich sehen, dass es eine Lücke von hInstance zu var_4 von 4 Bytes gibt. Was sind Sie? Ich nehme an, es ist die Absenderadresse, wie auf dem Bild von Wikipedia zu sehen?

(Anmerkung der Redaktion: ein langes Zitat aus Michaels Antwort entfernt, das nicht zur Frage gehört, in dem jedoch eine Folgefrage bearbeitet wurde):

Dies liegt daran, dass der Ablauf des Funktionsaufrufs wie folgt ist:

* Push parameters (hInstance, etc.)
* Call function, which pushes return address
* Push ebp
* Allocate space for locals

Meine Frage (hoffentlich zuletzt!) Ist nun, was genau passiert, wenn ich die Argumente der Funktion, die ich aufrufen möchte, bis zum Ende des Prologs einblende. Ich möchte wissen, wie sich das ebp in diesen Momenten entwickelt (ich habe bereits verstanden, wie der Prolog funktioniert, ich möchte nur wissen, was passiert, nachdem ich die Argumente auf dem Stapel und vor dem Prolog verschoben habe).

Antworten auf die Frage(8)

Ihre Antwort auf die Frage