これはおそらく簡単なものですが、しばらくの間これについて混乱しています:
次のようなものがあるとします
main:
...
call some_fun
...
some_fun:
...
jmp op
...
op:
...
ret
この ret は、呼び出しが開始された場所に正しく戻りますか? そうでない場合、ret はどのように正しく返されるのでしょうか?
提供された例で、返された後に実行される次の命令がcall some_funの後の命令である場合は、戻る前にスタック フレームをクリーンアップすることを条件に、希望どおりに実行されます。
x86 アセンブリを使用していると仮定すると、次のようになります。
お役に立てれば。
それでもクラッシュする場合は、試してください
move dword[stak],esp ;一番最初に
で終わります
mov esp,[スタック]
戻る
ちょっとしたこと
GL