弱问:SSE2中的MOVDQA的使用问题
大家好:我写了个交换两个16bit内存的代码如下:
void test()
{
const int m = 16;
const int n = 2;
int len = m*n;
unsigned char arr[m*n];
for(int i = 0;i<len;i++)
{
arr[i] = i%255;
}
__asm
{
lea eax,arr //得到arr的地址
mov esi,eax
movdqa xmm0,[esi]
movdqa xmm1,[esi+16]
movdqa [esi+16],xmm0
movdqa [esi],xmm1
}
}
运行中断了
用movdqu代替就OK了,这是为什么?
初学SSE2,不太懂这两个的区别
谢谢指点