我试图在 Netbeans 7.4 中编写一个示例 GCC 扩展内联汇编程序。
编译器选项是
gcc -masm=intel -O2 -c -g -O2 -std=c89 -MMD -MP -MF build/Debug/Cygwin_4.x-windows/main.o.d -o build/Debug/Cygwin_4.x-Windows/main.o main.c
显示的错误是
main.c: In function ‘main’:
main.c:27:19: error: expected ‘)’ before ‘:’ token
: [out]"=r"( op )
^
但是代码编译成功,没有一些选项。我使用 Cygwin (x86-x64) GCC 工具链。
代码是
int main()
{
unsigned *data = calloc ( 4 , sizeof (int ) );
unsigned sel , op;
scanf ( "%u%u%u%u" , data , data + 1 , data + 2 , data + 3 );
while ( scanf ( "%u" , &sel ) )
{
asm( "mov rcx, %[sel];"\
"and rcx, 3;"\
"mov rbx, %[data];"\
"mov %[out], [rbx+4*rcx]"
: [out]"=r"( op )
: [data]"p"( data ) , [sel]"r"( sel )
: "rcx" , "rbx"
);
}
printf ( "%u\n" , op );
return (EXIT_SUCCESS );
}
有什么想法可以解决这个问题吗?