x86 内联汇编器标志
Posted
技术标签:
【中文标题】x86 内联汇编器标志【英文标题】:x86 inline assembler flag 【发布时间】:2009-06-23 16:37:14 【问题描述】:愚蠢的问题,但我只是在 gcc 中找不到必要的标志。基本上,我的 C 程序中有以下内联汇编代码
__asm__ __volatile__ ("lea ebx, [timings] \n\t");
编译时,我收到一条错误消息:Error: invalid char '[' beginning operand 2
[timings]'`
现在我记得很久以前我使用了某种标志,告诉编译器它是 x86 内联汇编。但是在网上找不到,请问有人可以告诉我我必须使用哪个标志吗?
非常感谢!
【问题讨论】:
【参考方案1】:您不能使用 GCC 以这种方式指定变量。有关如何使用内联汇编程序的详细说明,请参阅this document。此外,请记住 GCC 使用 AT&T 语法,而不是 Intel 语法,因此您必须将目的地放在右侧。
【讨论】:
我过去做过,你可以用编译器指定你使用 intel 语法,但我傻了忘了怎么做 我不知道它的效果如何,但来自 GCC 文档:-masm=DIALECT' Output asm instructions using selected DIALECT. Supported choices are
intel' 或 att' (the default one). Darwin does not support
intel'。【参考方案2】:
尝试改用__asm__
。更多信息请关注here。
另外,请尝试从汇编代码中删除 \n\t。
【讨论】:
以上是关于x86 内联汇编器标志的主要内容,如果未能解决你的问题,请参考以下文章