x86 内联汇编器标志

发布于 2024-07-25 02:07:21 字数 308 浏览 5 评论 0原文

愚蠢的问题,但我只是在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

裂开嘴轻声笑有多痛 2024-08-01 02:07:22

您无法使用 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.

夜巴黎 2024-08-01 02:07:22

尝试使用 __asm__ 代替。 请参阅此处了解更多信息。

另外,尝试从汇编代码中删除 \n\t 。

Try using __asm__ instead. Look here for more.

Also, try removing the \n\t from inside the assembly code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文