【问题标题】:Question about ASM execution flow关于ASM执行流程的问题
【发布时间】:2011-04-12 07:02:24
【问题描述】:

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

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

例子:

foo:
    opcodes
    ...

nextLablel:
    moreopcodes
    ...        

在执行 'foo' 标签下的操作码后,汇编器是否移动到 'nextLabel'?

提前致谢!

【问题讨论】:

    标签: assembly g++ x86 gnu-assembler


    【解决方案1】:

    标签对实际代码是不存在的,所以是的,如果没有分支,代码将自然执行。汇编器将继续处理代码,忽略任何标签。标签只是作为在 jmp、je 等之后进行分支的便捷方式。

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

    【讨论】:

    • 谢谢!我更深入地查看了 ASM 代码,并基于原始 C 代码,它实际上确实如您所述继续执行。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2018-12-09
    • 1970-01-01
    相关资源
    最近更新 更多