Ich habe ein paar Fragen zu Stack.Ist Stack in CPU oder RAM?
- Ist Stack in CPU oder RAM?
- Ist Stack ein Ort zum Ausführen von OPcode?
- Ist EIP in CPU oder RAM?
Ich habe ein paar Fragen zu Stack.Ist Stack in CPU oder RAM?
Stapel ist immer im RAM. Es gibt einen Stapelzeiger, der in einem Register in der CPU gehalten wird, das auf den Anfang des Stapels zeigt, d. H. Die Adresse des Ortes an der Spitze des Stapels.
Der Stack befindet sich im RAM und nicht in der CPU. Ein Segment wird für den Stapel gewidmet ist, wie in der folgenden Abbildung gezeigt:
Von Wiki:
der Stapelbereich enthält den Programmstapel, eine LIFO-Struktur, die typischerweise in der höher gelegenen Teile der Erinnerung.
Über welche CPU sprechen Sie?
Einige Speicher enthalten könnte, dass für Callstacks verwendet wird, enthalten einige Speicher, dass für Callstacks verwendet werden können, erfordern aber das Betriebssystem die Aufrufhierarchie-Management-Code zu implementieren, und andere enthalten keine beschreibbaren Speicher überhaupt. Zum Beispiel neigt die x86-Architektur dazu, einen oder mehrere code caches and data caches in die CPU eingebaut zu haben.
Einige CPUs oder Betriebssysteme implementieren Operationen, die bestimmte Speicherbereiche nicht ausführbar machen. Um beispielsweise stapelbasierte Pufferüberläufe zu verhindern, verwenden viele Betriebssysteme hardware and/or software-based data execution prevention, wodurch verhindert werden könnte, dass der Stapelspeicher als Code ausgeführt wird. Einige nicht; Es ist durchaus möglich, dass eine x86-CPU-Daten-Cache-Zeile verwendet werden kann, um sowohl den Callstack als auch den Code zu speichern, der in schnellerem-Speicher ausgeführt werden soll.
EIP klingt wie ein Register für die IA32-CPU-Architektur. Wenn Sie sich auf IA-32 beziehen, dann ist es ja eine CPU-Operation, obwohl viele Betriebssysteme es zu/von RAM umschalten, um Multi-Tasking zu emulieren.
+1 Für die Angabe, dass ein Register von der CPU auf den Stapel zeigt –