⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inffas86.c

📁 gcc的组建
💻 C
📖 第 1 页 / 共 3 页
字号:
"        movl    92(%%rsp), %%esi\n"     /* from  = wsize */"        addq    56(%%rsp), %%rsi\n"     /* from += window */"        addq    %%rax, %%rsi\n"         /* from += write */"        subq    %%rcx, %%rsi\n"         /* from -= nbytes */"        subl    %%eax, %%ecx\n"         /* nbytes -= write */"        movl    %%r14d, %%eax\n"        /* eax = len */"        cmpl    %%ecx, %%eax\n""        jbe     .L_do_copy\n"           /* if (nbytes >= len) */"        subl    %%ecx, %%eax\n"         /* len -= nbytes */"        rep     movsb\n""        movq    56(%%rsp), %%rsi\n"     /* from = window */"        movl    96(%%rsp), %%ecx\n"     /* nbytes = write */"        cmpl    %%ecx, %%eax\n""        jbe     .L_do_copy\n"           /* if (nbytes >= len) */"        subl    %%ecx, %%eax\n"         /* len -= nbytes */"        rep     movsb\n""        movq    %%rdi, %%rsi\n""        subq    %%r15, %%rsi\n"         /* from = out - dist */"        jmp     .L_do_copy\n"".align 32,0x90\n"".L_contiguous_in_window:\n""        movq    56(%%rsp), %%rsi\n"     /* rsi = window */"        addq    %%rax, %%rsi\n""        subq    %%rcx, %%rsi\n"         /* from += write - nbytes */"        movl    %%r14d, %%eax\n"        /* eax = len */"        cmpl    %%ecx, %%eax\n""        jbe     .L_do_copy\n"           /* if (nbytes >= len) */"        subl    %%ecx, %%eax\n"         /* len -= nbytes */"        rep     movsb\n""        movq    %%rdi, %%rsi\n""        subq    %%r15, %%rsi\n"         /* from = out - dist */"        jmp     .L_do_copy\n"           /* if (nbytes >= len) */".align 32,0x90\n"".L_do_copy:\n""        movl    %%eax, %%ecx\n"         /* ecx = len */"        rep     movsb\n""        movq    %%r8, %%rsi\n"          /* move in back to %esi, toss from */"        jmp     .L_while_test\n"".L_test_for_end_of_block:\n""        testb   $32, %%al\n""        jz      .L_invalid_literal_length_code\n""        movl    $1, 116(%%rsp)\n""        jmp     .L_break_loop_with_status\n"".L_invalid_literal_length_code:\n""        movl    $2, 116(%%rsp)\n""        jmp     .L_break_loop_with_status\n"".L_invalid_distance_code:\n""        movl    $3, 116(%%rsp)\n""        jmp     .L_break_loop_with_status\n"".L_invalid_distance_too_far:\n""        movl    $4, 116(%%rsp)\n""        jmp     .L_break_loop_with_status\n"".L_break_loop:\n""        movl    $0, 116(%%rsp)\n"".L_break_loop_with_status:\n"/* put in, out, bits, and hold back into ar and pop esp */"        movq    %%rsi, 16(%%rsp)\n"     /* in */"        movq    %%rdi, 32(%%rsp)\n"     /* out */"        movl    %%ebx, 88(%%rsp)\n"     /* bits */"        movq    %%rdx, 80(%%rsp)\n"     /* hold */"        movq    (%%rsp), %%rax\n"       /* restore rbp and rsp */"        movq    8(%%rsp), %%rbp\n""        movq    %%rax, %%rsp\n"          :          : "m" (ar)          : "memory", "%rax", "%rbx", "%rcx", "%rdx", "%rsi", "%rdi",            "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"    );#elif ( defined( __GNUC__ ) || defined( __ICC ) ) && defined( __i386 )    __asm__ __volatile__ ("        leal    %0, %%eax\n""        movl    %%esp, (%%eax)\n"        /* save esp, ebp */"        movl    %%ebp, 4(%%eax)\n""        movl    %%eax, %%esp\n""        movl    8(%%esp), %%esi\n"       /* esi = in */"        movl    16(%%esp), %%edi\n"      /* edi = out */"        movl    40(%%esp), %%edx\n"      /* edx = hold */"        movl    44(%%esp), %%ebx\n"      /* ebx = bits */"        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */"        cld\n""        jmp     .L_do_loop\n"".align 32,0x90\n"".L_while_test:\n""        cmpl    %%edi, 24(%%esp)\n"      /* out < end */"        jbe     .L_break_loop\n""        cmpl    %%esi, 12(%%esp)\n"      /* in < last */"        jbe     .L_break_loop\n"".L_do_loop:\n""        cmpb    $15, %%bl\n""        ja      .L_get_length_code\n"    /* if (15 < bits) */"        xorl    %%eax, %%eax\n""        lodsw\n"                         /* al = *(ushort *)in++ */"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */"        addb    $16, %%bl\n"             /* bits += 16 */"        shll    %%cl, %%eax\n""        orl     %%eax, %%edx\n"        /* hold |= *((ushort *)in)++ << bits */".L_get_length_code:\n""        movl    56(%%esp), %%eax\n"      /* eax = lmask */"        andl    %%edx, %%eax\n"          /* eax &= hold */"        movl    (%%ebp,%%eax,4), %%eax\n" /* eax = lcode[hold & lmask] */".L_dolen:\n""        movb    %%ah, %%cl\n"            /* cl = this.bits */"        subb    %%ah, %%bl\n"            /* bits -= this.bits */"        shrl    %%cl, %%edx\n"           /* hold >>= this.bits */"        testb   %%al, %%al\n""        jnz     .L_test_for_length_base\n" /* if (op != 0) 45.7% */"        shrl    $16, %%eax\n"            /* output this.val char */"        stosb\n""        jmp     .L_while_test\n"".align 32,0x90\n"".L_test_for_length_base:\n""        movl    %%eax, %%ecx\n"          /* len = this */"        shrl    $16, %%ecx\n"            /* len = this.val */"        movl    %%ecx, 64(%%esp)\n"      /* save len */"        movb    %%al, %%cl\n""        testb   $16, %%al\n""        jz      .L_test_for_second_level_length\n" /* if ((op & 16) == 0) 8% */"        andb    $15, %%cl\n"             /* op &= 15 */"        jz      .L_decode_distance\n"    /* if (!op) */"        cmpb    %%cl, %%bl\n""        jae     .L_add_bits_to_len\n"    /* if (op <= bits) */"        movb    %%cl, %%ch\n"            /* stash op in ch, freeing cl */"        xorl    %%eax, %%eax\n""        lodsw\n"                         /* al = *(ushort *)in++ */"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */"        addb    $16, %%bl\n"             /* bits += 16 */"        shll    %%cl, %%eax\n""        orl     %%eax, %%edx\n"         /* hold |= *((ushort *)in)++ << bits */"        movb    %%ch, %%cl\n"            /* move op back to ecx */".L_add_bits_to_len:\n""        subb    %%cl, %%bl\n""        xorl    %%eax, %%eax\n""        incl    %%eax\n""        shll    %%cl, %%eax\n""        decl    %%eax\n""        andl    %%edx, %%eax\n"          /* eax &= hold */"        shrl    %%cl, %%edx\n""        addl    %%eax, 64(%%esp)\n"      /* len += hold & mask[op] */".L_decode_distance:\n""        cmpb    $15, %%bl\n""        ja      .L_get_distance_code\n"  /* if (15 < bits) */"        xorl    %%eax, %%eax\n""        lodsw\n"                         /* al = *(ushort *)in++ */"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */"        addb    $16, %%bl\n"             /* bits += 16 */"        shll    %%cl, %%eax\n""        orl     %%eax, %%edx\n"         /* hold |= *((ushort *)in)++ << bits */".L_get_distance_code:\n""        movl    60(%%esp), %%eax\n"      /* eax = dmask */"        movl    36(%%esp), %%ecx\n"      /* ecx = dcode */"        andl    %%edx, %%eax\n"          /* eax &= hold */"        movl    (%%ecx,%%eax,4), %%eax\n"/* eax = dcode[hold & dmask] */".L_dodist:\n""        movl    %%eax, %%ebp\n"          /* dist = this */"        shrl    $16, %%ebp\n"            /* dist = this.val */"        movb    %%ah, %%cl\n""        subb    %%ah, %%bl\n"            /* bits -= this.bits */"        shrl    %%cl, %%edx\n"           /* hold >>= this.bits */"        movb    %%al, %%cl\n"            /* cl = this.op */"        testb   $16, %%al\n"             /* if ((op & 16) == 0) */"        jz      .L_test_for_second_level_dist\n""        andb    $15, %%cl\n"             /* op &= 15 */"        jz      .L_check_dist_one\n""        cmpb    %%cl, %%bl\n""        jae     .L_add_bits_to_dist\n"   /* if (op <= bits) 97.6% */"        movb    %%cl, %%ch\n"            /* stash op in ch, freeing cl */"        xorl    %%eax, %%eax\n""        lodsw\n"                         /* al = *(ushort *)in++ */"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */"        addb    $16, %%bl\n"             /* bits += 16 */"        shll    %%cl, %%eax\n""        orl     %%eax, %%edx\n"        /* hold |= *((ushort *)in)++ << bits */"        movb    %%ch, %%cl\n"            /* move op back to ecx */".L_add_bits_to_dist:\n""        subb    %%cl, %%bl\n""        xorl    %%eax, %%eax\n""        incl    %%eax\n""        shll    %%cl, %%eax\n""        decl    %%eax\n"                 /* (1 << op) - 1 */"        andl    %%edx, %%eax\n"          /* eax &= hold */"        shrl    %%cl, %%edx\n""        addl    %%eax, %%ebp\n"          /* dist += hold & ((1 << op) - 1) */".L_check_window:\n""        movl    %%esi, 8(%%esp)\n"       /* save in so from can use it's reg */"        movl    %%edi, %%eax\n""        subl    20(%%esp), %%eax\n"      /* nbytes = out - beg */"        cmpl    %%ebp, %%eax\n""        jb      .L_clip_window\n"        /* if (dist > nbytes) 4.2% */"        movl    64(%%esp), %%ecx\n"      /* ecx = len */"        movl    %%edi, %%esi\n""        subl    %%ebp, %%esi\n"          /* from = out - dist */"        sarl    %%ecx\n""        jnc     .L_copy_two\n"           /* if len % 2 == 0 */"        rep     movsw\n""        movb    (%%esi), %%al\n""        movb    %%al, (%%edi)\n""        incl    %%edi\n""        movl    8(%%esp), %%esi\n"       /* move in back to %esi, toss from */"        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */"        jmp     .L_while_test\n"".L_copy_two:\n""        rep     movsw\n""        movl    8(%%esp), %%esi\n"       /* move in back to %esi, toss from */"        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */"        jmp     .L_while_test\n"".align 32,0x90\n"".L_check_dist_one:\n""        cmpl    $1, %%ebp\n"            /* if dist 1, is a memset */"        jne     .L_check_window\n""        cmpl    %%edi, 20(%%esp)\n""        je      .L_check_window\n"      /* out == beg, if outside window */"        movl    64(%%esp), %%ecx\n"      /* ecx = len */"        movb    -1(%%edi), %%al\n""        movb    %%al, %%ah\n""        sarl    %%ecx\n""        jnc     .L_set_two\n""        movb    %%al, (%%edi)\n""        incl    %%edi\n"".L_set_two:\n""        rep     stosw\n""        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */"        jmp     .L_while_test\n"".align 32,0x90\n"".L_test_for_second_level_length:\n""        testb   $64, %%al\n""        jnz     .L_test_for_end_of_block\n" /* if ((op & 64) != 0) */"        xorl    %%eax, %%eax\n""        incl    %%eax\n""        shll    %%cl, %%eax\n""        decl    %%eax\n""        andl    %%edx, %%eax\n"         /* eax &= hold */"        addl    64(%%esp), %%eax\n"     /* eax += len */"        movl    (%%ebp,%%eax,4), %%eax\n" /* eax = lcode[val+(hold&mask[op])]*/"        jmp     .L_dolen\n"".align 32,0x90\n"".L_test_for_second_level_dist:\n""        testb   $64, %%al\n""        jnz     .L_invalid_distance_code\n" /* if ((op & 64) != 0) */"        xorl    %%eax, %%eax\n""        incl    %%eax\n""        shll    %%cl, %%eax\n""        decl    %%eax\n""        andl    %%edx, %%eax\n"         /* eax &= hold */"        addl    %%ebp, %%eax\n"         /* eax += dist */"        movl    36(%%esp), %%ecx\n"     /* ecx = dcode */"        movl    (%%ecx,%%eax,4), %%eax\n" /* eax = dcode[val+(hold&mask[op])]*/"        jmp     .L_dodist\n"".align 32,0x90\n"".L_clip_window:\n""        movl    %%eax, %%ecx\n""        movl    48(%%esp), %%eax\n"     /* eax = wsize */"        negl    %%ecx\n"                /* nbytes = -nbytes */"        movl    28(%%esp), %%esi\n"     /* from = window */"        cmpl    %%ebp, %%eax\n""        jb      .L_invalid_distance_too_far\n" /* if (dist > wsize) */"        addl    %%ebp, %%ecx\n"         /* nbytes = dist - nbytes */"        cmpl    $0, 52(%%esp)\n""        jne     .L_wrap_around_window\n" /* if (write != 0) */"        subl    %%ecx, %%eax\n""        addl    %%eax, %%esi\n"         /* from += wsize - nbytes */"        movl    64(%%esp), %%eax\n"     /* eax = len */"        cmpl    %%ecx, %%eax\n""        jbe     .L_do_copy\n"           /* if (nbytes >= len) */"        subl    %%ecx, %%eax\n"         /* len -= nbytes */"        rep     movsb\n""        movl    %%edi, %%esi\n""        subl    %%ebp, %%esi\n"         /* from = out - dist */"        jmp     .L_do_copy\n"".align 32,0x90\n"".L_wrap_around_window:\n""        movl    52(%%esp), %%eax\n"     /* eax = write */"        cmpl    %%eax, %%ecx\n""        jbe     .L_contiguous_in_window\n" /* if (write >= nbytes) */"        addl    48(%%esp), %%esi\n"     /* from += wsize */"        addl    %%eax, %%esi\n"         /* from += write */"        subl    %%ecx, %%esi\n"         /* from -= nbytes */"        subl    %%eax, %%ecx\n"         /* nbytes -= write */"        movl    64(%%esp), %%eax\n"     /* eax = len */"        cmpl    %%ecx, %%eax\n""        jbe     .L_do_copy\n"           /* if (nbytes >= len) */"        subl    %%ecx, %%eax\n"         /* len -= nbytes */"        rep     movsb\n""        movl    28(%%esp), %%esi\n"     /* from = window */"        movl    52(%%esp), %%ecx\n"     /* nbytes = write */"        cmpl    %%ecx, %%eax\n""        jbe     .L_do_copy\n"           /* if (nbytes >= len) */"        subl    %%ecx, %%eax\n"         /* len -= nbytes */"        rep     movsb\n""        movl    %%edi, %%esi\n""        subl    %%ebp, %%esi\n"         /* from = out - dist */"        jmp     .L_do_copy\n"".align 32,0x90\n"".L_contiguous_in_window:\n""        addl    %%eax, %%esi\n""        subl    %%ecx, %%esi\n"         /* from += write - nbytes */"        movl    64(%%esp), %%eax\n"     /* eax = len */"        cmpl    %%ecx, %%eax\n""        jbe     .L_do_copy\n"           /* if (nbytes >= len) */"        subl    %%ecx, %%eax\n"         /* len -= nbytes */"        rep     movsb\n""        movl    %%edi, %%esi\n""        subl    %%ebp, %%esi\n"         /* from = out - dist */"        jmp     .L_do_copy\n"           /* if (nbytes >= len) */".align 32,0x90\n"".L_do_copy:\n""        movl    %%eax, %%ecx\n""        rep     movsb\n""        movl    8(%%esp), %%esi\n"      /* move in back to %esi, toss from */"        movl    32(%%esp), %%ebp\n"     /* ebp = lcode */"        jmp     .L_while_test\n"".L_test_for_end_of_block:\n""        testb   $32, %%al\n""        jz      .L_invalid_literal_length_code\n""        movl    $1, 72(%%esp)\n""        jmp     .L_break_loop_with_status\n"".L_invalid_literal_length_code:\n""        movl    $2, 72(%%esp)\n""        jmp     .L_break_loop_with_status\n"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -