Ist der stack in CPU oder RAM?
Ich habe ein paar Frage zu stack.
- Ist stack in CPU oder RAM?
- Ist Stapel ein Ort zu laufen OPcode?
- EIP ist die CPU oder den RAM?
Das sind Fragen ohne Bezug zueinander. Nein, Prozessor-Anweisungen werden nur selten in den Stapel. Das EIP register wird nicht auf dem stack, außer es wird auf dem Stapel abgelegt wird, wenn eine Funktion aufgerufen wird, und knallte vom stack nach der Rückkehr.
InformationsquelleAutor abiati madana | 2013-03-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stack ist immer im RAM. Es gibt einen stack-pointer, das ist gehalten in einem register in der CPU, die Punkte an die Spitze des Stapels, d.h., die Adresse der Position an der Spitze des stack.
Es kommt auf den Prozessor. Einige Prozessoren besitzen keine Stapel. Prozessoren verwenden in der Regel Haupt-Speicher für den stack-Daten, aber ein stack besteht aus Stapel-Register und Prozessor-Anweisungen und Anwendungen. Ein stack könnte nicht arbeiten, ohne die Maschine Anweisungen oder etwas zu schieben auf den Stapel und pop vom Stapel.
InformationsquelleAutor unxnut
Dem stack befindet sich im RAM und nicht die CPU. Ein segment für den stack, wie in der folgenden Abbildung:
Vom Wiki:
InformationsquelleAutor Goaler444
Welcher CPU redest du?
Einige vielleicht enthalten Speicher, die ist verwendet für die zugehörigen Aufruflisten, einige enthalten Speicher, die werden kann verwendet für die zugehörigen Aufruflisten, erfordern aber das OS zu implementieren, die callstack-management-code, und andere enthalten keine beschreibbaren Speicher. Zum Beispiel die x86-Architektur in der Regel eine oder mehrere code-caches und Daten-caches eingebaut in der CPU.
Einigen Prozessoren oder Betriebssysteme implementieren Operationen, die bestimmte Bereiche des Arbeitsspeichers nicht ausführbar. Um zu verhindern, dass stack-basierte buffer overflows, zum Beispiel, viele Betriebssysteme verwenden hardware und/oder software-basierten data execution prevention, die möglicherweise verhindern, dass stack-Speicher wird als code ausgeführt. Einige nicht; Es ist durchaus möglich, dass ein x86-CPU-Daten-cache-Zeile kann verwendet werden, zum speichern der callstack und code ausgeführt werden, in schneller Speicher.
EIP klingt wie ein register für die IA32-CPU-Architektur. Wenn Sie ' re unter Bezugnahme auf IA-32, dann ja, es ist eine CPU-operation, obwohl viele Betriebssysteme, die schalten Sie es in/aus dem RAM zu emulieren, multi-tasking.
Sorry, die Verhinderung der Ausführung von Anweisungen im stack ist relevant, weil die Frage, ob ein stack ist ein Ort zu laufen OPcodes.
Die Frage ist nicht tagged
[x86]
wir können nicht davon ausgehen, dass diese Frage ist ausschließlich für die gemeinsame x86-Konfigurationen; wir müssen davon ausgehen andere Architekturen sind auch im Sinn, es sei denn der OP gibt nicht ausdrücklich anderes.InformationsquelleAutor autistic