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