📄 crc_lcc.asm
字号:
; crc_lcc.asm, optimized CRC calculation function for Zip and UnZip, not; copyrighted by Paul Kienitz and Christian Spieler. Last revised 25 Mar 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}.;; 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 andl $7,%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 jecxz _$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 + -