c-SSE2编译器错误

我试图闯入SSE2,并尝试了以下example program

#include "stdafx.h"    
#include <emmintrin.h>

int main(int argc, char* argv[])
{
__declspec(align(16)) long mul; // multiply variable
__declspec(align(16)) int t1[100000]; // temporary variable
__declspec(align(16)) int t2[100000]; // temporary variable
__m128i mul1, mul2;
 for (int j = 0; j < 100000; j++)
 {
 t1[j] = j;
 t2[j] = j+1;
 } // set temporary variables to random values
 _asm
 {
  mov eax, 0
  label: movdqa xmm0, xmmword ptr [t1+eax]
  movdqa xmm1, xmmword ptr [t2+eax]
  pmuludq xmm0, xmm1
  movdqa mul1, xmm0
  movdqa xmm0, xmmword ptr [t1+eax]
  pshufd xmm0, xmm0, 05fh
  pshufd xmm1, xmm1, 05fh
  muludq xmm0, xmm1
  movdqa mul2, xmm0
  add eax, 16
  cmp eax, 100000
  jnge label
 }
 return 0;
 }

并获得以下警告和错误:

warning C4405: ‘xmm0’ : identifier is reserved word

error C2400: inline assembler syntax error in ‘opcode’; found ‘xmm0’

我尝试搜索可能的原因,但是大多数遇到我问题的人都使用Visual C 6.0,而我使用Visual C 8.0.

有什么建议么?

解决方法:

如果您进行更改,错误就会消失

muludq xmm0, xmm1

pmuludq xmm0, xmm1

您确定您不只是在那里错过了p吗?

编辑:实际上,您确实确定了,因为我从未听说过muludq.实际上,我用mcow替换了它(我不知道它不存在),并得到了相同的错误.

上一篇:c-128乘法和除法的内在函数


下一篇:在Win32 Release模式下,在VC 2010中查看准确反汇编的最佳方法是什么?