문제

SSE2에 침입하려고 노력하고 다음을 시도했습니다. 예제 프로그램:

#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;
 }

다음 경고와 오류를 받으십시오.

경고 c4405 : 'xmm0': 식별자가 예약 된 단어입니다.

오류 C2400 : 'Opcode'의 인라인 어셈블러 구문 오류; 'xmm0'발견

가능한 원인을 검색하려고 시도했지만 내 문제를 공유하는 대부분의 사람들은 Visual C ++ 8.0을 사용하는 반면 시각적 C ++ 6.0을 사용했습니다.

제안이 있습니까?

도움이 되었습니까?

해결책

변경하면 오류가 사라집니다

muludq xmm0, xmm1

에게

pmuludq xmm0, xmm1

당신은 거기에서 AP를 놓치지 않았다고 확신합니까?

편집 : 사실 나는 Muludq에 대해 들어 본 적이 없기 때문에 당신이 한 일은 꽤 확실합니다. 사실 나는 그것을 McOW (내가 존재하지 않는다는 것을 알고 있음)로 교체하고 같은 오류를 얻었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top