簡體   English   中英

與GCC內聯組裝

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM