2

ASM 実行フローを解釈する方法がわかりません。これまでに調べたすべてのファイルには、ASM ファイル内のラベルへの明示的なジャンプ (Intel x86 AT&T 構文、つまり jmp または jl) がありました。

私の質問: 他のラベルへの明示的なジャンプなしでラベルの最後に到達するとどうなりますか。実行は次のラベルに続くか?

例:

foo:
    opcodes
    ...

nextLablel:
    moreopcodes
    ...        

「foo」ラベルの下でオペコードを実行した後、アセンブラは「nextLabel」に移動しますか?

前もって感謝します!

4

1 に答える 1

4

ラベルは実際のコードには存在しないため、分岐がない場合、コードは自然に実行されます。アセンブラは、ラベルを無視してコードを続行します。ラベルは、jmp、je などの後に分岐するための便利な方法として存在します。

コードにブランチがない場合でも、必要な数のラベルを持つことができます。それらは何もせず、非常に悪い習慣になりますが、これは自然なコード フローに問題を引き起こさないという考えを示しています。

于 2011-04-12T07:07:22.810 に答える