gpt4 book ai didi

c++ - 使用 GCC 进行内联汇编

转载 作者:搜寻专家 更新时间:2023-10-31 01:44:44 26 4
gpt4 key购买 nike

#include <stdio.h>

int
get_random(void)
{
asm(".intel_syntax noprefix\n"
"mov eax, 42 \n");
asm("mov eax, 42 \n");
}
int
main(void)
{
return printf("The answer is %d.\n", get_random());
}

我正在尝试使用这些 CLI 命令编译此 C++ 程序:g++ asm.cpp -o asm

错误信息:

/tmp/ccXHbaRO.s: Assembler messages:
/tmp/ccXHbaRO.s:41: Error: no such instruction: `movl %eax,%esi'
/tmp/ccXHbaRO.s:42: Error: no such instruction: `movl $.LC0,%edi'
/tmp/ccXHbaRO.s:43: Error: no such instruction: `movl $0,%eax'

因为我添加了 asm(".intel_syntax noprefix\n"); 我想我不需要添加 GCcflags -masm=intel?

此外,我在哪里可以找到有关 -masm 标志的更多信息?是否有 NASM 等价物?

最佳答案

您在汇编中编写的代码会逐字放入编译器的输出中。

这意味着如果您更改格式或其他有关如何解析汇编代码的全局选项,您将需要在最后恢复默认选项。

如果您不这样做,编译器在您的部分之后生成的代码将变得无效。

关于c++ - 使用 GCC 进行内联汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23075354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com