[英]Inline Assembly with GCC
#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");
我以為我不需要添加GCC標志-masm=intel
?
另外,在哪里可以找到有關-masm
標志的更多信息? 有相當於NASM的產品嗎?
您在匯編中編寫的代碼將逐字放置在編譯器的輸出中。
這意味着,如果您更改有關解析程序集代碼的格式或其他全局選項,則需要在最后恢復默認選項。
如果不執行此操作,則在您執行此部分之后由編譯器生成的代碼將無效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.