인라인 어셈으로 MMX 레지스트리 접근하려는데... 이해가 안가는 부분이 있어서요...
#include
#include
short s1[4] = {1, 2, 3, 4};
short d1[4] = {0, 0, 0, 0};
int main()
{
printf("Before - %d, %d, %d, %d\n", d1[0], d1[1], d1[2], d1[3]);
__asm__ volatile (
"movq (%1), %%mm0 \n\t"
"movq %%mm0, (%0) "
:"=g"(d1)
:"g"(*s1)
);
printf("After - %d, %d, %d, %d\n", d1[0], d1[1], d1[2], d1[3]);
return 0;
}
위와같이 컴파일 하면 잘 되는데요...
#include
#include
int main()
{
short s1[4] = {1, 2, 3, 4};
short d1[4] = {0, 0, 0, 0};
printf("Before - %d, %d, %d, %d\n", d1[0], d1[1], d1[2], d1[3]);
__asm__ volatile (
"movq (%1), %%mm0 \n\t"
"movq %%mm0, (%0) "
:"=g"(d1)
:"g"(*s1)
);
printf("After - %d, %d, %d, %d\n", d1[0], d1[1], d1[2], d1[3]);
return 0;
}
위와같이 하면 잘 안됩니다... 이해가 안가네여... 왜그럴까요?
정상적인 사용법이 아닙니다.
이렇게 고치세요.
댓글 달기