как работать с 128 битами C переменная и xmm 128 битами asm?

в gcc я хочу сделать 128 битов xor с 2 переменными C, с помощью кода asm: как?

asm (
    "movdqa %1, %%xmm1;"
    "movdqa %0, %%xmm0;"
     "pxor %%xmm1,%%xmm0;"
     "movdqa %%xmm0, %0;"

    :"=x"(buff) /* output operand */
    :"x"(bu), "x"(buff)
    :"%xmm0","%xmm1"
    );

но у меня есть ошибка отказа Сегментации; это - вывод objdump:

movq   -0x80(%rbp),%xmm2

movq   -0x88(%rbp),%xmm3

movdqa %xmm2,%xmm1

movdqa %xmm2,%xmm0

pxor   %xmm1,%xmm0

movdqa %xmm0,%xmm2

movq   %xmm2,-0x78(%rbp)
10
задан hivert 13 March 2014 в 23:30
поделиться