这可能很简单,但我对此感到困惑一段时间了:
假设我有类似
的内容main:
...
call some_fun
...
some_fun:
...
jmp op
...
op:
...
ret
这会正确地返回到呼叫开始的地方吗?如果没有,那么ret将如何正确返回?
答案 0 :(得分:7)
如果在提供的示例中,您希望它返回之后执行的下一条指令是调用some_fun 之后的指令,那么是的,如果您清理堆栈,它将完全按照您的要求执行返回前的框架。
假设您正在使用x86程序集,以下是正在进行的操作。
希望这有帮助。
答案 1 :(得分:0)
如果它仍然崩溃,那么试试
移动dword [stak],esp;一开始就
以
结束mov esp,[stak]
保留
有点儿的事情
GL