c++ - SSE2编译器错误

标签 c++ visual-studio-2005 assembly visual-c++-2005 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++ - SSE2编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1874882/

相关文章:

c++ - 没有 __VA_ARGS__ 的可变参数宏

c++ - 按对象 vector 的 vector 中的对象字段排序

c# - 在 CLR 中使用托管线程和纤程

c++ - 如何使 MS-Visual C++ 应用程序最大化?

visual-studio - 彻底卸载 Visual Studio 2005 需要什么

assembly - NASM(英特尔)与 AT&T 语法 : what are the advantages?

c++ - 传递参数(本身就是一个引用)目标的引用

c++ - 带有 Visual Studio 2005 的 volatile unsigned __int64 行为异常

assembly - ASM - "%"用于什么?

assembly - 如何在6502汇编中将16位数字除以2?