x86 内联汇编器标志
愚蠢的问题,但我只是在 gcc 中找不到必要的标志。 基本上,我在我的 C 程序中有以下内联汇编代码
__asm__ __volatile__ ("lea ebx, [timings] \n\t");
编译时,我收到一条错误消息,其中显示: Error: invalid char '['开始操作数 2
[timings]'`
现在我记得很久以前,我使用某种标志告诉编译器它是 x86 内联汇编。 但在网上找不到它,也许有人可以告诉我我必须使用哪个标志?
太感谢了!
Silly question, but I just can not find the necessary flag in gcc. Basically, I have in my C program the following inline assembler code
__asm__ __volatile__ ("lea ebx, [timings] \n\t");
When compiling, I get an errormessage which says: Error: invalid char '[' beginning operand 2
[timings]'`
Now I remember that a long time ago I used some kind of flag that told the compiler that it is x86 inline assembly. But cant find it online, could maybe someone please tell me which flag i have to use?
Thank you so much!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您无法使用 GCC 那样指定变量。 请参阅本文档了解如何使用内联汇编器。 另外,请记住,GCC 使用 AT&T 语法,而不是 Intel 语法,因此您必须将目标放在右侧。
You can't specify variables that way with GCC. See this document for a detailed description of how to use inline assembler. Also, keep in mind that GCC uses AT&T syntax, not Intel syntax, so you have to put your destinations on the right.
尝试使用
__asm__
代替。 请参阅此处了解更多信息。另外,尝试从汇编代码中删除 \n\t 。
Try using
__asm__
instead. Look here for more.Also, try removing the \n\t from inside the assembly code.