关于ASM执行流程的问题

时间:2011-04-12 07:02:24

标签: assembly g++ x86 gas

我不确定如何解释ASM执行流程。到目前为止,我所看到的所有文件都有明确的跳转(Intel x86 AT& T语法,即jmp或jl)到ASM文件中的标签。

我的问题:当你到达标签的末尾而没有明确跳转到其他标签时会发生什么。执行会继续进入下一个标签吗?

示例:

foo:
    opcodes
    ...

nextLablel:
    moreopcodes
    ...        

执行'foo'标签下的操作码后,汇编程序是否移到'nextLablel'上?

提前致谢!

1 个答案:

答案 0 :(得分:3)

标签不存在于实际代码中,所以是的,如果没有分支,代码将自然执行。汇编器将继续使用代码,忽略任何标签。标签就是在jmp,je等之后进行分支的便捷方式。

如果您的代码没有任何分支,您仍然可以拥有任意数量的标签。他们不会做任何事情,这将是一个非常糟糕的做法,但你这说明了他们不会对自然代码流造成任何问题的想法。