【发布时间】:2019-09-19 16:18:42
【问题描述】:
当我尝试在 Visual Studio 中编译此代码时,在第 13 行的 ':' 处出现错误,并显示“预期为 ')'”
#include<stdio.h>
int increase(int x)
{
int y;
asm
(
" movl %[x], %%eax \n"
" add $0x01, %%eax \n"
" movl %%eax, %[y] \n"
" jmp done \n"
" done: nop \n"
: [y] "=m" (y) //Error
: [x] "m" (x)
: "eax"
);
return y;
}
int main()
{
int i = 5;
printf("Original i value = %d\n", i);
i = increase(i);
printf("Using the Assembly code: new i value = %d\n", i);
}
【问题讨论】:
-
Visual Studio 不支持
asm。它的变体(用于 32 位编译)使用__asm。 -
Visual Studio 不支持 AT&T 风格的 ASM。使用英特尔风格。此外,内联汇编仅在 32 位平台上受支持。 x64 和 ARM 需要独立的源文件。
-
谢谢你的回答,我在Linux环境下试试。