📄 crc_lcc.asm
字号:
;===========================================================================; Copyright (c) 1990-2005 Info-ZIP. All rights reserved.;; See the accompanying file LICENSE, version 2005-Feb-10 or later; (the contents of which are also included in zip.h) for terms of use.; If, for some reason, all these files are missing, the Info-ZIP license; also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html;===========================================================================; crc_lcc.asm, optimized CRC calculation function for Zip and UnZip,; created by Paul Kienitz and Christian Spieler. Last revised 24 Dec 98.;; The code in this file has been copied verbatim from crc_i386.{asm|S};; only the assembler syntax and metacommands have been adapted to; the habits of the free LCC-Win32 C compiler package.; This version of the code uses the "optimized for i686" variant of; crc_i386.{asm|S}.; IMPORTANT NOTE to the Info-ZIP editors:; The TAB characters in this source file are required by the parser of; the LCC-Win32 assembler program and MUST NOT be removed!!;; For more information (and a revision log), look into the original; source files.; .text .file "crc32.c" .text .type _crc32,function_crc32: pushl %ebp movl %esp,%ebp pushl %ecx pushl %ebx pushl %esi pushl %edi .line 34 .line 37 movl 12(%ebp),%esi subl %eax,%eax testl %esi,%esi jz _$3 .line 39 call _get_crc_table movl %eax,%edi .line 41 movl 8(%ebp),%eax movl 16(%ebp),%ecx notl %eax testl %ecx,%ecx jz _$4_$5: testl $3,%esi jz _$6 xorb (%esi),%al incl %esi movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax decl %ecx jnz _$5_$6: movl %ecx,%edx shrl $3,%ecx jz _$8_$7: xorl (%esi),%eax addl $4,%esi movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax xorl (%esi),%eax addl $4,%esi movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax decl %ecx jnz _$7_$8: movl %edx,%ecx andl $7,%ecx jz _$4_$9: xorb (%esi),%al incl %esi movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax decl %ecx jnz _$9_$4: xorl $0xffffffff,%eax_$3: .line 52 popl %edi popl %esi popl %ebx leave ret_$34: .size _crc32,_$34-_crc32 .globl _crc32 .extern _get_crc_table
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -