asm __volatile__ (
"jmp L20\n\t"
".p2align 4,,7\n\t"
"L20:\n\t"
"movl %%ecx,(%%edi)\n\t"
"addl $1,%%ebx\n\t"
"cmpl $32,%%ebx\n\t"
"jne L21\n\t"
"movl %%esi,%%ecx\n\t"
"xorl %%ebx,%%ebx\n\t"
"jmp L22\n"
"L21:\n\t"
"shll $1,%%ecx\n\t"
"orl %%eax,%%ecx\n\t"
"L22:\n\t"
"addl $4,%%edi\n\t"
"cmpl %%edx,%%edi\n\t"
"jb L20\n\t"
: "=b" (k), "=D" (p)
: "D" (p),"d" (pe),"b" (k),"c" (pat),
"a" (sval), "S" (lb)
);
------
asm __volatile__ (
"pushl %%ebp\n\t"
"jmp L30\n\t"
".p2align 4,,7\n\t"
"L30:\n\t"
"movl (%%edi),%%ebp\n\t"
"cmpl %%ecx,%%ebp\n\t"
"jne L34\n\t"
"L35:\n\t"
"notl %%ecx\n\t"
"movl %%ecx,(%%edi)\n\t"
"notl %%ecx\n\t"
"incl %%ebx\n\t"
"cmpl $32,%%ebx\n\t"
"jne L31\n\t"
"movl %%esi,%%ecx\n\t"
"xorl %%ebx,%%ebx\n\t"
"jmp L32\n"
"L31:\n\t"
"shll $1,%%ecx\n\t"
"orl %%eax,%%ecx\n\t"
"L32:\n\t"
"addl $4,%%edi\n\t"
"cmpl %%edx,%%edi\n\t"
"jb L30\n\t"
"jmp L33\n\t"
"L34:\n\t" \
"pushl %%esi\n\t"
"pushl %%eax\n\t"
"pushl %%ebx\n\t"
"pushl %%edx\n\t"
"pushl %%ebp\n\t"
"pushl %%ecx\n\t"
"pushl %%edi\n\t"
"call error\n\t"
"popl %%edi\n\t"
"popl %%ecx\n\t"
"popl %%ebp\n\t"
"popl %%edx\n\t"
"popl %%ebx\n\t"
"popl %%eax\n\t"
"popl %%esi\n\t"
"jmp L35\n"
"L33:\n\t"
"popl %%ebp\n\t"
: "=b" (k), "=D" (p)
: "D" (p),"d" (pe),"b" (k),"c" (pat),
"a" (sval), "S" (lb)
);
-----
asm __volatile__ (
"pushl %%ebp\n\t"
"addl $4,%%edi\n\t"
"jmp L40\n\t"
".p2align 4,,7\n\t"
"L40:\n\t"
"subl $4,%%edi\n\t"
"movl (%%edi),%%ebp\n\t"
"notl %%ecx\n\t"
"cmpl %%ecx,%%ebp\n\t"
"jne L44\n\t"
"L45:\n\t"
"notl %%ecx\n\t"
"movl %%ecx,(%%edi)\n\t"
"decl %%ebx\n\t"
"cmpl $0,%%ebx\n\t"
"jg L41\n\t"
"movl %%esi,%%ecx\n\t"
"movl $32,%%ebx\n\t"
"jmp L42\n"
"L41:\n\t"
"shrl $1,%%ecx\n\t"
"orl %%eax,%%ecx\n\t"
"L42:\n\t"
"cmpl %%edx,%%edi\n\t"
"ja L40\n\t"
"jmp L43\n\t"
"L44:\n\t" \
"pushl %%esi\n\t"
"pushl %%eax\n\t"
"pushl %%ebx\n\t"
"pushl %%edx\n\t"
"pushl %%ebp\n\t"
"pushl %%ecx\n\t"
"pushl %%edi\n\t"
"call error\n\t"
"popl %%edi\n\t"
"popl %%ecx\n\t"
"popl %%ebp\n\t"
"popl %%edx\n\t"
"popl %%ebx\n\t"
"popl %%eax\n\t"
"popl %%esi\n\t"
"jmp L45\n"
"L43:\n\t"
"subl $4,%%edi\n\t"
"popl %%ebp\n\t"
: "=b" (k), "=D" (p), "=c" (pat)
: "D" (p),"d" (pe),"b" (k),"c" (pat),
"a" (p3), "S" (hb)
); |