crc_lcc.asm

来自「完整的解压zip文件的源码。包含密码功能」· 汇编 代码 · 共 109 行

ASM
109
字号
; 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 + =
减小字号Ctrl + -
显示快捷键?