我正在研究Linux x64中的SIMD(SSE)编程。 我想将一个数组短类型分配给另一个短数组类型var。 但执行结果是错误的 这是我的来源。什么是问题?
#include <stdio.h>
#include <emmintrin.h>
int main( int argc, char* argv[] )
{
short sArrayA[8] = {1,2,3,4,5,6,7,8};
short sArrayB[8] = {0,0,0,0,0,0,0,0};
__asm__ __volatile__(
"movdqu %1, %%xmm0\n\t"
"movdqu %%xmm0, %0"
:"=g"(sArrayB)
:"x"(sArrayA)
:"%xmm0"
);
printf("sArrayB : %d, %d, %d\n", sArrayB[0], sArrayB[1], sArrayB[2] );
return 0;
}
结果是:
sArrayB : -13600, -24676, 32767