Exit-Programm x86

Ich Lerne, x86 assembly. Ich versuche zu verstehen, wie "Programm beenden" funktioniert auf x86. Wir haben einen code :

push ebp
mov ebp,esp
//Some stuff here
mov esp, ebp
pop ebp
ret

Wenn der Prozessor führt die Anweisung "ret" :

EIP wird Wert, der vom stack geholt, in anderen Worten 0.
also Prozessor geht an Adresse 0 und wird versuchen, die Anweisungen auszuführen, ... die nicht enthalten Programm-code/ausführbaren code.
Also, was ist wirklich Los mit Prozessor? Gibt es Zustand zu überprüfen, zum Beispiel if EIP = 0 -> exit program? Or if ESP out of bounds -> exit program? `Wie Prozessor versteht, dass dieses RET-Anweisung ist das Ende des Programms?

  • Der Begriff "Programm" und "beenden" sind nur aussagekräftig in Zusammenhang mit einem Betriebssystem. Consult Ihr Betriebssystem Anleitung, wie der Zugriff auf diese Konzepte programmgesteuert. (Auf einen typischen desktop-OS, es wäre system-Aufrufe für das erstellen und beenden eines Prozesses.)
  • ".. knallte vom Stapel, in anderen Worten 0." Wie kamen Sie zu dieser Schlussfolgerung? Ihr Programm heißt "von" - Adresse 0"?
InformationsquelleAutor user3719859 | 2015-09-05
Schreibe einen Kommentar