我正在学习 x86 汇编。我试图了解“退出程序”如何在 x86 上工作。我们有一个代码:
push ebp
mov ebp,esp
//Some stuff here
mov esp, ebp
pop ebp
ret
Run Code Online (Sandbox Code Playgroud)
当处理器执行指令“ret”时:
EIP 将具有从堆栈中弹出的值,即 0。因此处理器将转到 0 地址并尝试执行不包含程序代码/可执行代码的指令。那么,处理器到底发生了什么?是否有条件检查,例如,if EIP = 0 -> exit program? Or if ESP out of bounds -> exit program?`处理器如何理解这条 RET 指令是程序的结尾?