编译内联MMX汇编程序时出错:后缀或操作数无效

时间:2013-01-16 21:05:59

标签: c gcc assembly mmx

以下代码:

simd(n, is)
long *is;
{   
   long i;
   asm("pxor %mm0,%mm0");
   for (i = 0; i < n; i += W) {

       asm("movq %0 %%mm1\n\t"
           "paddq %%mm1 %%mm0"
           :
           :"m"(is[i])          );

   }
   return 0;
}

我无法理解为什么它无法编译并出现以下错误:

/tmp/ccrDnFTm.s: Assembler messages:
/tmp/ccrDnFTm.s:29: Error: suffix or operands invalid for `movq'
/tmp/ccrDnFTm.s:30: Error: junk `%mm0' after register

为什么吗

1 个答案:

答案 0 :(得分:4)

操作数必须用逗号分隔:

movq %0, %%mm1