Здесь весь исходный код
void asmFunction() {
unsigned char threshold[16];
initArray(threshold, 75-128, 16);
unsigned char counterC2[16];
initArray(counterC2, 128, 16);
unsigned char buffer[SIZE];
FILE *fp;
fp = fopen(FILE_INPUT, "rb");
FILE *foutput;
foutput = fopen(FILE_OUTPUT_ASM, "wb");
fread(buffer, sizeof(unsigned char), SIZE, fp);
fclose(fp);
__asm__(
"mov $65536, %%edx\n"
"mov %[thr], %%eax\n" // <--- this line
"mov %[buf], %%ebx\n"
"mov %[cc2], %%ecx\n"
"movdqu (%%ecx), %%xmm2;\n"
"movdqu (%%eax), %%xmm0;\n"
"loop: movdqu (%%ebx), %%xmm1;\n"
"psubb %%xmm2, %%xmm1;\n"
"pcmpgtb %%xmm0, %%xmm1;\n"
"movdqu %%xmm1, (%%ebx);\n"
"add $16, %%ebx;\n"
"sub $1, %%edx;\n"
"mov $0, %%esi;\n"
"cmp %%edx, %%esi;\n"
"jnz loop;\n"
: "=m" (buffer) // Output
: [thr]"r" (threshold), [buf]"r" (buffer), [cc2]"r" (counterC2)
: "xmm0", "eax", "ebx", "ecx"
);
fwrite(buffer, sizeof(unsigned char), SIZE, foutput);
fclose(foutput);
}
Но я получаю следующую ошибку, и я не понимаю, почему:
неизвестное использование мнемоники инструкций без суффикса размера "mov% [thr], %% eax \ n "
Может кто-нибудь мне помочь?