0
Linux x64'te SIMD (SSE) programlaması üzerinde çalışıyorum .. Diğer kısa dizi tipi varlara bir dizi kısa tipi atamak istiyorum. Ancak yürütülen sonuç yanlıştır işte benim kaynak. sorun nedir?gcc inline simd montaj hatası: kısa tip movdqu talimatı
#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;
}
sonucudur:
sArrayB : -13600, -24676, 32767
asm deneme yaparken kullandığı içsel (Paul'ün önerdiği gibi) neredeyse kesinlikle gitmek için daha iyi bir yoldur. Ancak, ASM kullanmanız GEREKİRSE, "x" 'i "m" ye değiştirin. –
@DavidWohlferd: Ve "" = g "' to '" = x ", siz işteyken. – EOF