【发布时间】:2020-02-16 17:40:47
【问题描述】:
是否可以使用 GCC 或 Clang 编写内联汇编(Intel 语法),而无需了解 clobber 列表“东西”?
我猜是“否”,因为 clobber 列表“stuff”确保您不会覆盖编译器写入的寄存器(就在您的内联汇编开始之前)?
【问题讨论】:
-
是的,但这破坏了使用内联汇编的意义,即无缝集成到编译器生成的代码。您对变量的访问也将受到限制。请参阅basic asm section in the manual。
-
不需要开关,除非你为其他方言编写汇编(例如
-masm=intel)。 -
在 gcc 中使用内联 asm 不需要额外的开关。如果您遇到问题,请发布您的代码。
-
@fuz,虽然这个问题专门询问“clobber 列表”,但我认为它实际上也是在询问操作数列表。 (换句话说,我认为这个问题混淆了语法的哪一部分是clobber列表。)
-
回答问题按书面形式(忽略可能对clobber list 含义的混淆):是的,几乎没有我的内联程序集使用clobber 列表,因为它只修改分配给输出操作数的寄存器。
标签: gcc assembly x86 clang inline-assembly