0

我试图在 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 );
}

有什么想法可以解决这个问题吗?

4

0 回答 0