Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6814 → Rev 6815

/programs/fs/kfar/trunk/zlib/trees.asm
500,12 → 500,9
jl .end0
jne m_end
movzx eax,n
add eax,depth
mov al,byte[eax]
mov al,byte[eax+depth]
movzx ebx,m
add ebx,depth
mov bl,byte[ebx]
cmp al,bl
cmp al,byte[ebx+depth]
jg m_end
.end0:
}
522,17 → 519,13
; int k ;node to move down
align 4
proc pqdownheap, s:dword, tree:dword, k:dword
locals
v dw ?
endl
pushad
;ecx - v dw
mov edi,[s]
mov eax,[k]
zlib_debug 'pqdownheap k = %d',eax
mov esi,eax
mov esi,[k]
zlib_debug 'pqdownheap k = %d',esi
mov cx,[edi+deflate_state.heap+2*esi]
shl esi,1
mov ax,[edi+deflate_state.heap+2*eax]
mov [v],ax
;esi = j ;left son of k
.cycle0: ;while (..<=..)
cmp esi,[edi+deflate_state.heap_len]
540,24 → 533,20
; Set j to the smallest of the two sons:
;;cmp esi,[edi+deflate_state.heap_len]
jge .end1 ;if (..<.. &&
mov ecx,edi
add ecx,deflate_state.depth
mov edx,esi
shl edx,1
add edx,edi
add edx,deflate_state.heap
smaller [tree], word[edx+2], word[edx], ecx, .end1
smaller [tree], word[edx+2], word[edx], edi+deflate_state.depth, .end1
inc esi
.end1:
; Exit if v is smaller than both sons
mov ecx,edi
add ecx,deflate_state.depth
mov dx,[edi+deflate_state.heap+2*esi]
smaller [tree], [v], dx, ecx, .end2
smaller [tree], cx, dx, edi+deflate_state.depth, .end2
jmp .cycle0end ;break
.end2:
; Exchange v with the smallest son
mov dx,[edi+deflate_state.heap+2*esi]
;;mov dx,[edi+deflate_state.heap+2*esi]
mov eax,[k]
mov [edi+deflate_state.heap+2*eax],dx
mov [k],esi
564,10 → 553,10
; And continue down the tree, setting j to the left son of k
shl esi,1
jmp .cycle0
align 4
.cycle0end:
mov eax,[k]
mov bx,[v]
mov [edi+deflate_state.heap+2*eax],bx
mov [edi+deflate_state.heap+2*eax],cx
popad
ret
endp
1026,7 → 1015,7
add edx,edi
mov ah,byte[edx+deflate_state.depth]
cmp al,ah
jl @f ;if (al>=ah) al=al : al=ah
jge @f ;if (al>=ah) al=al : al=ah
mov al,ah
@@:
inc al
1098,8 → 1087,8
mov eax,[tree]
movzx eax,word[eax+Len]
mov [nextlen],eax
cmp eax,0
jne @f ;if (..==0)
test eax,eax
jnz @f ;if (..==0)
mov dword[max_count],138
mov dword[min_count],3
@@:
1110,14 → 1099,15
mov word[eax+Len],0xffff ;guard
 
xor ecx,ecx
align 4
.cycle0:
cmp ecx,[max_code]
jg .cycle0end ;for (..;..<=..;..)
mov eax,[nextlen]
mov [curlen],eax
mov eax,ecx
inc eax
imul eax,sizeof.ct_data
inc ecx
mov eax,sizeof.ct_data
imul eax,ecx
add eax,[tree]
movzx eax,word[eax+Len]
mov [nextlen],eax
1127,9 → 1117,8
jge .end0
mov eax,[nextlen]
cmp [curlen],eax
jne .end0 ;if (..<.. && ..==..)
inc ecx
jmp .cycle0 ;continue
je .cycle0 ;if (..<.. && ..==..) continue
align 4
.end0:
cmp ebx,[min_count]
jge .end1 ;else if (..<..)
1138,6 → 1127,7
add eax,edi
add word[eax+deflate_state.bl_tree+Freq],bx
jmp .end4
align 4
.end1:
cmp dword[curlen],0
je .end2 ;else if (..!=0)
1153,6 → 1143,7
add eax,edi
inc word[eax+deflate_state.bl_tree+Freq]
jmp .end4
align 4
.end2:
cmp ebx,10
jg .end3 ;else if (..<=..)
1161,6 → 1152,7
add eax,edi
inc word[eax+deflate_state.bl_tree+Freq]
jmp .end4
align 4
.end3: ;else
mov eax,REPZ_11_138
imul eax,sizeof.ct_data
1167,28 → 1159,27
add eax,edi
inc word[eax+deflate_state.bl_tree+Freq]
.end4:
mov dword[curlen],0
mov dword[count],0
mov eax,[curlen]
mov [prevlen],eax
mov [nextlen],eax
cmp eax,0
cmp dword[nextlen],0
jne .end5 ;if (..==0)
mov dword[max_count],138
mov dword[min_count],3
jmp .end7
jmp .cycle0
align 4
.end5:
mov eax,[curlen]
cmp eax,[nextlen]
jne .end6 ;else if (..==..)
mov dword[max_count],6
mov dword[min_count],3
jmp .end7
jmp .cycle0
align 4
.end6: ;else
mov dword[max_count],7
mov dword[min_count],4
.end7:
inc ecx
jmp .cycle0
align 4
.cycle0end:
ret
endp
1707,6 → 1698,7
add eax,edi
inc word[eax+deflate_state.dyn_ltree+Freq]
jmp .end0
align 4
@@: ;else
inc dword[edi+deflate_state.matches]
; Here, lc is the match length - MIN_MATCH
1723,16 → 1715,13
zlib_assert '_tr_tally: bad match' ;Assert(..<.. && ..<=.. && ..<..)
.end2:
mov eax,[lc]
add eax,_length_code
movzx eax,byte[eax]
movzx eax,byte[eax+_length_code]
add eax,LITERALS+1
imul eax,sizeof.ct_data
add eax,edi
inc word[eax+deflate_state.dyn_ltree+Freq]
inc word[edi+eax+deflate_state.dyn_ltree+Freq]
d_code [dist]
imul eax,sizeof.ct_data
add eax,edi
inc word[eax+deflate_state.dyn_dtree+Freq]
inc word[edi+eax+deflate_state.dyn_dtree+Freq]
.end0:
 
if TRUNCATE_BLOCK eq 1
2067,10 → 2056,13
end if
mov ecx,[len]
mov esi,[buf]
jmp .end0
align 4
@@: ;while (len--)
lodsb
mov bl,al
put_byte edi, bl
.end0:
loop @b
ret
endp