亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? match.asm

?? zip格式壓縮解壓縮源碼及演示 先用VC編譯czip_source目錄內(nèi)程序,之后拷貝debug目錄內(nèi)zipdll.dll和zipdll.lib到czip_demo目錄再編譯此目錄內(nèi)程序即可得到演示程
?? ASM
字號:
; match.asm -- optional optimized asm version of longest match in deflate.c
; Copyright (C) 1992-1993 Jean-loup Gailly
; This is free software; you can redistribute it and/or modify it under the
; terms of the GNU General Public License, see the file COPYING.
;
; Must be assembled with masm -ml. To be used only with C compact model
; or large model. (For large model, assemble with -D__LARGE__).
; This file is only optional. If you don't have masm or tasm, use the
; C version (add -DNO_ASM to CFLAGS in makefile.msc and remove match.obj
; from OBJI). If you have reduced WSIZE in zip.h, then change its value
; below.
;
; Turbo C 2.0 does not support static allocation of more than 64K bytes per
; file, and does not have SS == DS. So TC and BC++ users must use:
;   tasm -ml -DDYN_ALLOC -DSS_NEQ_DS match;
;
; To simplify the code, the option -DDYN_ALLOC is supported for OS/2
; only if the arrays are guaranteed to have zero offset (allocated by
; halloc). We also require SS==DS. This is satisfied for MSC but not Turbo C.

; $Id: match.asm,v 0.6 1993/01/21 18:49:05 jloup Exp $

        name    match

ifndef DYN_ALLOC
        extrn   _prev         : word
        extrn   _window       : byte
        prev    equ  _prev    ; offset part
        window  equ  _window
endif

_DATA    segment  word public 'DATA'
        extrn   _nice_match   : word
        extrn   _match_start  : word
        extrn   _prev_length  : word
        extrn   _good_match   : word
        extrn   _strstart     : word
        extrn   _max_chain_length : word
ifdef DYN_ALLOC
        extrn   _prev         : word
        extrn   _window       : word
        prev    equ 0         ; offset forced to zero
        window  equ 0
        window_seg equ _window[2]
	window_off equ 0
else
	wseg    dw seg _window
        window_seg equ wseg
	window_off equ offset _window
endif
_DATA    ends

DGROUP  group _DATA

_TEXT   segment word public 'CODE'
        assume  cs: _TEXT, ds: DGROUP

	public _match_init
        public _longest_match

	MIN_MATCH     equ 3
        MAX_MATCH     equ 258
	WSIZE         equ 32768		; keep in sync with zip.h !
	MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1)
	MAX_DIST      equ (WSIZE-MIN_LOOKAHEAD)

prev_ptr    dw  seg _prev		; pointer to the prev array
ifdef SS_NEQ_DS
    match_start dw  0			; copy of _match_start if SS != DS
    nice_match  dw  0			; copy of _nice_match  if SS != DS
endif

; initialize or check the variables used in match.asm.

ifdef __LARGE__
_match_init proc far			; 'proc far' for large model
else
_match_init proc near			; 'proc near' for compact model
endif
ifdef SS_NEQ_DS
        ma_start equ cs:match_start	; does not work on OS/2
        nice     equ cs:nice_match
	mov	ax,_nice_match
	mov     cs:nice_match,ax       	; ugly write to code, crash on OS/2
else
	assume ss: DGROUP
        ma_start equ ss:_match_start
        nice     equ ss:_nice_match
        mov     ax,ds
        mov     bx,ss
        cmp     ax,bx                   ; SS == DS?
        jne     error
endif
ifdef DYN_ALLOC
	cmp	_prev[0],0		; verify zero offset
	jne	error
	cmp	_window[0],0
	jne	error
  ifdef SS_NEQ_DS
	mov	ax,_prev[2]		; segment value
	mov     cs:prev_ptr,ax		; ugly write to code, crash on OS/2
        prev_seg  equ cs:prev_ptr
  else
        prev_seg  equ ss:_prev[2]	; works on OS/2 if SS == DS
  endif
else
        prev_seg  equ cs:prev_ptr
endif
	ret
ifdef __LARGE__
	extrn   _exit : far		; 'far' for large model
else
	extrn   _exit : near		; 'near' for compact model
endif
error:  call    _exit

_match_init endp

; -----------------------------------------------------------------------
; Set match_start to the longest match starting at the given string and
; return its length. Matches shorter or equal to prev_length are discarded,
; in which case the result is equal to prev_length and match_start is
; garbage.
; IN assertions: cur_match is the head of the hash chain for the current
;   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1

; int longest_match(cur_match)

ifdef __LARGE__
_longest_match  proc far		 ; 'proc far' for large model
else
_longest_match  proc near		 ; 'proc near' for compact model
endif
        push    bp
        mov     bp,sp
        push    di
	push	si
	push	ds

ifdef __LARGE__
        cur_match    equ word ptr [bp+6] ; [bp+6] for large model
else
        cur_match    equ word ptr [bp+4] ; [bp+4] for compact model
endif

;       window	     equ es:window (es:0 for DYN_ALLOC)
;       prev	     equ ds:prev
;       match        equ es:si
;       scan         equ es:di
;       chain_length equ bp
;       best_len     equ bx
;       limit        equ dx

	mov	si,cur_match            ; use bp before it is destroyed
        mov     bp,_max_chain_length    ; chain_length = max_chain_length
	mov	di,_strstart
	mov	dx,di
	sub	dx,MAX_DIST             ; limit = strstart-MAX_DIST
	jae	limit_ok
	sub	dx,dx			; limit = NIL
limit_ok:
        add     di,2+window_off         ; di = offset(window + strstart + 2)
        mov     bx,_prev_length         ; best_len = prev_length
	mov     es,window_seg
        mov     ax,es:[bx+di-3]         ; ax = scan[best_len-1..best_len]
        mov     cx,es:[di-2]            ; cx = scan[0..1]
	cmp	bx,_good_match		; do we have a good match already?
        mov     ds,prev_seg    		; (does not destroy the flags)
        assume  ds: nothing
        jb      do_scan			; good match?
	shr	bp,1			; chain_length >>= 2
	shr	bp,1
        jmp     short do_scan

        even                            ; align destination of branch
long_loop:
; at this point, ds:di == scan+2, ds:si == cur_match
        mov     ax,[bx+di-3]            ; ax = scan[best_len-1..best_len]
        mov     cx,[di-2]               ; cx = scan[0..1]
        mov     ds,prev_seg    		; reset ds to address the prev array
short_loop:
; at this point, di == scan+2, si = cur_match,
; ax = scan[best_len-1..best_len] and cx = scan[0..1]
if (WSIZE-32768)
        and     si,WSIZE-1              ; not needed if WSIZE=32768
endif
        shl     si,1                    ; cur_match as word index
        mov     si,prev[si]             ; cur_match = prev[cur_match]
        cmp     si,dx			; cur_match <= limit ?
        jbe     the_end
        dec     bp                      ; --chain_length
        jz      the_end
do_scan:
        cmp     ax,word ptr es:window[bx+si-1] ; check match at best_len-1
        jne     short_loop
        cmp     cx,word ptr es:window[si]      ; check min_match_length match
        jne     short_loop

        lea     si,window[si+2]         ; si = match
        mov     ax,di                   ; ax = scan+2
        mov     cx,es
        mov     ds,cx			; ds = es = window
        mov     cx,(MAX_MATCH-2)/2      ; scan for at most MAX_MATCH bytes
        repe    cmpsw                   ; loop until mismatch
        je      maxmatch                ; match of length MAX_MATCH?
mismatch:
        mov     cl,[di-2]               ; mismatch on first or second byte?
        sub     cl,[si-2]               ; cl = 0 if first bytes equal
        xchg    ax,di                   ; di = scan+2, ax = end of scan
        sub     ax,di                   ; ax = len
	sub	si,ax			; si = cur_match + 2 + offset(window)
	sub	si,2+window_off         ; si = cur_match
        sub     cl,1                    ; set carry if cl == 0 (can't use DEC)
        adc     ax,0                    ; ax = carry ? len+1 : len
        cmp     ax,bx                   ; len > best_len ?
        jle     long_loop
        mov     ma_start,si             ; match_start = cur_match
        mov     bx,ax                   ; bx = best_len = len
        cmp     ax,nice                 ; len >= nice_match ?
        jl      long_loop
the_end:
	pop	ds
        assume  ds: DGROUP
ifdef SS_NEQ_DS
	mov	ax,ma_start		; garbage if no match found
	mov	ds:_match_start,ax
endif
        pop     si
        pop     di
        pop     bp
        mov     ax,bx                   ; result = ax = best_len
        ret
maxmatch:                               ; come here if maximum match
        cmpsb                           ; increment si and di
        jmp     mismatch                ; force match_length = MAX_LENGTH
        
_longest_match  endp

_TEXT   ends
end

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区高清播放| 国产日本欧洲亚洲| 一区二区视频在线| 91啦中文在线观看| 亚洲精品国产品国语在线app| 91蜜桃传媒精品久久久一区二区| **欧美大码日韩| 色偷偷一区二区三区| 亚洲午夜精品网| 欧美精品123区| 精品一区二区av| 国产日韩v精品一区二区| 99久久久久久99| 亚洲国产视频网站| 日韩女优制服丝袜电影| 国产精品一级片在线观看| 国产片一区二区三区| 91农村精品一区二区在线| 亚洲成av人片一区二区三区| 欧美电视剧在线看免费| 成人一区在线观看| 亚洲国产婷婷综合在线精品| 欧美不卡123| www.成人在线| 视频一区二区不卡| 久久―日本道色综合久久| 99久久久无码国产精品| 日本成人中文字幕| 亚洲欧洲另类国产综合| 91麻豆精品国产91久久久资源速度 | 亚洲欧美日韩在线播放| 欧美婷婷六月丁香综合色| 久久国产剧场电影| 亚洲摸摸操操av| 日韩精品最新网址| 91碰在线视频| 久久国产精品一区二区| 亚洲乱码国产乱码精品精的特点 | 国产成人在线网站| 亚洲一线二线三线久久久| 亚洲精品一线二线三线无人区| 一本色道亚洲精品aⅴ| 黑人精品欧美一区二区蜜桃| 亚洲综合一区二区| 欧美激情一区在线观看| 欧美一二三区在线观看| 91丨porny丨蝌蚪视频| 黄色小说综合网站| 亚洲成人激情av| 日韩一区日韩二区| 久久丝袜美腿综合| 欧美一区二区成人| 欧美综合色免费| 懂色av一区二区三区免费看| 久久99久久精品| 天天综合日日夜夜精品| 亚洲日本中文字幕区| 久久欧美一区二区| 精品免费视频.| 欧美日韩国产另类一区| 一本色道综合亚洲| 99这里只有久久精品视频| 国产精品一区免费视频| 婷婷夜色潮精品综合在线| 伊人开心综合网| 中文字幕一区二区日韩精品绯色| 久久久亚洲午夜电影| 欧美电影免费观看高清完整版在 | 日韩视频免费观看高清完整版 | 精品少妇一区二区三区在线播放| 色天天综合色天天久久| 成人免费看的视频| 丰满岳乱妇一区二区三区| 国内外精品视频| 免费人成网站在线观看欧美高清| 夜夜爽夜夜爽精品视频| 亚洲精品综合在线| 亚洲欧美激情一区二区| 亚洲色图色小说| 亚洲欧洲av一区二区三区久久| 国产女人aaa级久久久级 | 久久午夜老司机| 日韩精品一区二区三区视频在线观看| 欧美乱熟臀69xxxxxx| 欧美日韩日日夜夜| 在线播放日韩导航| 欧美一级高清大全免费观看| 日韩亚洲欧美一区二区三区| 日韩一级黄色片| 精品久久久三级丝袜| 久久久综合精品| 国产精品视频线看| 亚洲男同1069视频| 亚洲高清不卡在线观看| 肉丝袜脚交视频一区二区| 青青草国产精品97视觉盛宴| 久久成人麻豆午夜电影| 国产成人av电影在线播放| 9i看片成人免费高清| 欧美影视一区二区三区| 日韩一区二区在线免费观看| 欧美tickling网站挠脚心| 国产欧美一区二区精品久导航| 国产精品不卡一区| 亚洲午夜免费电影| 久久成人免费网| 不卡视频在线观看| 欧美日韩在线直播| 精品国产乱码久久久久久夜甘婷婷| 国产三级精品三级在线专区| 亚洲乱码国产乱码精品精98午夜| 亚洲电影第三页| 国产精品伊人色| 91久久线看在观草草青青| 91麻豆精品国产91久久久资源速度| 久久久99精品免费观看不卡| 综合激情成人伊人| 青青草国产精品亚洲专区无| 高清在线不卡av| 欧美精品三级日韩久久| 久久精品人人做人人综合| 一区二区三区在线不卡| 精品亚洲国产成人av制服丝袜| 不卡电影一区二区三区| 91精品欧美久久久久久动漫 | 欧美精品一区二区三区很污很色的| 国产精品网站在线播放| 日韩不卡一区二区| www.成人在线| 精品久久99ma| 亚洲成人免费在线| 成人国产一区二区三区精品| 欧美二区三区的天堂| 国产精品久久影院| 久久99久国产精品黄毛片色诱| 日本韩国一区二区三区| 久久久久久亚洲综合| 日韩一区欧美二区| 91论坛在线播放| 国产亚洲欧美日韩俺去了| 午夜视频在线观看一区二区三区| 成人污污视频在线观看| 日韩欧美国产小视频| 亚洲一区在线看| a4yy欧美一区二区三区| 久久日韩粉嫩一区二区三区| 蜜臀精品一区二区三区在线观看| 色综合天天综合给合国产| 久久午夜羞羞影院免费观看| 日本不卡的三区四区五区| 91高清视频免费看| 亚洲欧洲色图综合| 懂色av中文字幕一区二区三区| 精品久久久久久最新网址| 午夜电影一区二区三区| 91官网在线免费观看| 成人欧美一区二区三区黑人麻豆 | 中文字幕av一区二区三区高 | 亚洲精品伦理在线| 99久久综合狠狠综合久久| 国产亚洲婷婷免费| 国内国产精品久久| 欧美精品一区二区三| 国产精品一区二区不卡| 欧美夫妻性生活| 日韩和的一区二区| 欧美精品久久99久久在免费线 | 亚洲午夜一二三区视频| 色综合久久久久| 一区二区在线观看视频| 色综合天天做天天爱| 伊人婷婷欧美激情| 欧洲一区二区三区免费视频| 一区二区高清免费观看影视大全| 色综合色综合色综合色综合色综合 | 夜色激情一区二区| 在线免费观看视频一区| 亚洲午夜激情网页| 欧美日韩久久久| 日韩福利电影在线| 欧美一区二区三区视频免费 | 欧美午夜精品久久久| 亚洲国产欧美在线| 在线电影院国产精品| 日产国产高清一区二区三区| 日韩一级高清毛片| 国产精品亚洲一区二区三区在线| 国产日韩欧美在线一区| www.av亚洲| 亚洲已满18点击进入久久| 在线综合视频播放| 国产精品综合一区二区三区| 亚洲国产精品成人久久综合一区| 99re这里只有精品首页| 性欧美大战久久久久久久久| 欧美tickle裸体挠脚心vk| 成人美女视频在线观看18| 一区二区三区在线观看国产 | 免费一级片91| 欧美极品美女视频|