2011-04-12 152 views
1

我不確定如何解釋ASM執行流程。到目前爲止,我看過的所有文件都有明確的跳轉(Intel x86 AT & T語法,即jmp或jl)到ASM文件中的標籤。關於ASM執行流程的問題

我的問題:當你到達標籤的末尾而沒有顯式跳轉到其他標籤時會發生什麼。執行是否繼續進入下一個標籤?

實施例:

foo: 
    opcodes 
    ... 

nextLablel: 
    moreopcodes 
    ...   

將 'foo' 標籤下執行的操作碼之後,確實彙編移動到 'nextLablel'?

提前致謝!

回答

3

標籤不存在於實際代碼中,所以是的,如果沒有分支,代碼將自然執行。彙編程序將繼續執行代碼,忽略任何標籤。這些標籤只是作爲jmp,je和類似內容之後分支的便捷方式。

如果您的代碼沒有任何分支,您仍然可以擁有任意數量的標籤。他們不會做任何事情,這將是一個非常糟糕的做法,但是這說明了他們不會對自然代碼流造成任何問題。

+0

謝謝!我深入瞭解了ASM代碼,並根據原始的C代碼實際上確實繼續執行,如您所述。再次感謝! – certifiedNoob 2011-04-12 07:22:28

+0

歡迎您:) – Spyros 2011-04-12 07:33:15