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

📄 lzo1f_d.ash

📁 开源的压缩算法 lzo 源码 ,open VPN 就是用这个算法
💻 ASH
字号:
/* lzo1f_d.ash -- assembler implementation of the LZO1F decompression algorithm   This file is part of the LZO real-time data compression library.   Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer   Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer   Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer   Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer   Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer   Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer   Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer   Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer   Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer   Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer   All Rights Reserved.   The LZO library is free software; you can redistribute it and/or   modify it under the terms of the GNU General Public License,   version 2, as published by the Free Software Foundation.   The LZO library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with the LZO library; see the file COPYING.   If not, write to the Free Software Foundation, Inc.,   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.   Markus F.X.J. Oberhumer   <markus@oberhumer.com>   http://www.oberhumer.com/opensource/lzo/ *//* * This file has been adapted from code generously contributed by * Laszlo Molnar aka ML1050 <ml1050@hotmail.com> * * Many thanks, Laszlo ! *//***********************************************************************//************************************************************************/        ALIGN3.L0:        xorl    %eax,%eax        movb    (%esi),%al        incl    %esi        cmpb    $31,%al        ja      .LM2        orb     %al,%al        movl    %eax,%ecx        jnz     .L21:        LODSB        orb     %al,%al        jnz     2f        addl    N_255,%ecx        jmp     1b2:        lea     31(%eax,%ecx),%ecx.L2:        TEST_OP((%edi,%ecx),%ebx)        TEST_IP((%esi,%ecx),%ebx)        movb    %cl,%al        shrl    $2,%ecx        rep        movsl        andb    $3,%al        jz      1f        movl    (%esi),%ebx        addl    %eax,%esi        movl    %ebx,(%edi)        addl    %eax,%edi1:        movb    (%esi),%al        incl    %esi.LM1:        cmpb    $31,%al        jbe     .LM21.LM2:        cmpb    $223,%al        ja      .LM3        movl    %eax,%ecx        shrl    $2,%eax        lea     -1(%edi),%edx        andb    $7,%al        shrl    $5,%ecx        movl    %eax,%ebx        movb    (%esi),%al        leal    (%ebx,%eax,8),%eax        incl    %esi.LM5:        subl    %eax,%edx        addl    $2,%ecx        xchgl   %edx,%esi        TEST_LOOKBEHIND(%esi)        TEST_OP((%edi,%ecx),%ebx)        cmpl    $6,%ecx        jb      1f        cmpl    $4,%eax        jb      1f        movb    %cl,%al        shrl    $2,%ecx        rep        movsl        andb    $3,%al        movb    %al,%cl1:        rep        movsb        movl    %edx,%esi.LN1:        movb    -2(%esi),%cl        andl    $3,%ecx        jz      .L0        movl    (%esi),%eax        addl    %ecx,%esi        movl    %eax,(%edi)        addl    %ecx,%edi        xorl    %eax,%eax        movb    (%esi),%al        incl    %esi        jmp     .LM1.LM21:        TEST_OP(3(%edi),%edx)        shrl    $2,%eax        leal    -0x801(%edi),%edx        movl    %eax,%ecx        movb    (%esi),%al        incl    %esi        leal    (%ecx,%eax,8),%eax        subl    %eax,%edx        TEST_LOOKBEHIND(%edx)        movl    (%edx),%eax        movl    %eax,(%edi)        addl    $3,%edi        jmp     .LN11:        LODSB        orb     %al,%al        jnz     2f        addl    N_255,%ecx        jmp     1b2:        lea     31(%eax,%ecx),%ecx        jmp     .LM4        ALIGN3.LM3:        andb    $31,%al        movl    %eax,%ecx        jz      1b.LM4:        movl    %edi,%edx        movw    (%esi),%ax        addl    $2,%esi        shrl    $2,%eax        jnz     .LM5.LEOF:/****   xorl    %eax,%eax          eax=0 from above */        cmpl    $1,%ecx         /* ecx must be 1 */        setnz   %al/*vi:ts=4*/

⌨️ 快捷键说明

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