-1

関数を呼び出した場合、jmpその関数内のコマンドを使用して別の関数の一部に戻ることはできますか?つまり、このコードは有効ですか?

testfunction PROC
    jmp jumppoint
    ret
testfunction ENDP


main PROC
jumppoint:
    call testfunction
main ENDP
END

これが有効な場合、無限ループが発生するはずです。はい・いいえ?

4

2 に答える 2

2

「有効」とは、アセンブラがそれを実行できることを意味する場合、答えは「はい」です。一種の無限ループが導入されます。ただし、call命令は実行されるたびにスタック(リターンアドレス)に追加情報を配置するため、最終的にスタックがオーバーフローし、プログラムがクラッシュします(リアルモードで実行している場合はそうではない可能性があります)。

于 2012-04-17T05:47:26.267 に答える
0

有効なようで、無限ループが発生します。実行して、正しいかどうかを確認してみませんか?

もちろん、スタックは有限であるため、オーバーフォローします0xFFFFFFFF >= esp > 0

于 2012-04-17T05:47:46.273 に答える