kolibrios-fun/programs/fs/kfar/trunk/zlib/debug.inc
IgorA 2c0a9cbf44 optimize struct 'z_stream'
git-svn-id: svn://kolibrios.org@6797 a494cfbc-eb01-0410-851d-a64ba20cac60
2016-12-14 14:54:51 +00:00

441 lines
8.6 KiB
PHP

txt_zv db '*',0
txt_sp db ' ',0
txt_buf db '1234',0
rd 1
buf_param rb 80
macro cStr dest,txt
{
local .end_t
local .m_txt
jmp .end_t
align 4
.m_txt db txt,0
align 4
.end_t:
if dest eq
mov eax,.m_txt
else
mov dest,.m_txt
end if
}
;for debug
tz1 db 'next_in',13,10,0
tz2 db 'avail_in',13,10,0
tz3 db 'total_in',13,10,0
tz4 db 'next_out',13,10,0
tz5 db 'avail_out',13,10,0
tz6 db 'total_out',13,10,0
tz7 db 'msg',13,10,0
tz8 db 'state',13,10,0
tz9 db 'zalloc',13,10,0
tz10 db 'zfree',13,10,0
tz11 db 'opaque',13,10,0
tz12 db 'data_type',13,10,0
tz13 db 'adler',13,10,0
tz14 db 'reserved',13,10,0
sv_2:
dd z_stream.next_in,4,tz1
dd z_stream.avail_in,4,tz2
dd z_stream.total_in,4,tz3
dd z_stream.next_out,4,tz4
dd z_stream.avail_out,4,tz5
dd z_stream.total_out,4,tz6
dd z_stream.msg,4,tz7
dd z_stream.state,4,tz8
dd z_stream.zalloc,4,tz9
dd z_stream.zfree,4,tz10
dd z_stream.opaque,4,tz11
dd z_stream.data_type,4,tz12
dd z_stream.adler,4,tz13
dd z_stream.reserved,4,tz14
dd 0,0
ta1 db 'strm',13,10,0
ta2 db 'status',13,10,0
ta3 db 'pending_buf',13,10,0
ta4 db 'pending_buf_size',13,10,0
ta5 db 'pending_out',13,10,0
ta6 db 'pending',13,10,0
ta7 db 'wrap',13,10,0
ta8 db 'gzhead',13,10,0
ta9 db 'gzindex',13,10,0
ta10 db 'method',13,10,0
ta11 db 'last_flush',13,10,0
ta12 db 'w_size',13,10,0
ta13 db 'w_bits',13,10,0
ta14 db 'w_mask',13,10,0
ta15 db 'window',13,10,0
ta16 db 'window_size',13,10,0
ta17 db 'prev',13,10,0
ta18 db 'head',13,10,0
ta19 db 'ins_h',13,10,0
ta20 db 'hash_size',13,10,0
ta21 db 'hash_bits',13,10,0
ta22 db 'hash_mask',13,10,0
ta23 db 'hash_shift',13,10,0
ta24 db 'block_start',13,10,0
ta25 db 'match_length',13,10,0
ta26 db 'prev_match',13,10,0
ta27 db 'match_available',13,10,0
ta28 db 'strstart',13,10,0
ta29 db 'match_start',13,10,0
ta30 db 'lookahead',13,10,0
ta31 db 'prev_length',13,10,0
ta32 db 'max_chain_length',13,10,0
ta33 db 'max_lazy_match',13,10,0
ta34 db 'level',13,10,0
ta35 db 'strategy',13,10,0
ta36 db 'good_match',13,10,0
ta37 db 'nice_match',13,10,0
ta38 db 'dyn_ltree',13,10,0
ta39 db 'dyn_dtree',13,10,0
ta40 db 'bl_tree',13,10,0
ta41 db 'l_desc',13,10,0
ta42 db 'd_desc',13,10,0
ta43 db 'bl_desc',13,10,0
ta44 db 'bl_count',13,10,0
ta45 db 'heap',13,10,0
ta46 db 'heap_len',13,10,0
ta47 db 'heap_max',13,10,0
ta48 db 'depth',13,10,0
ta49 db 'l_buf',13,10,0
ta50 db 'lit_bufsize',13,10,0
ta51 db 'last_lit',13,10,0
ta52 db 'd_buf',13,10,0
ta53 db 'opt_len',13,10,0
ta54 db 'static_len',13,10,0
ta55 db 'matches',13,10,0
ta56 db 'insert',13,10,0
; db 'compressed_len',13,10,0
; db 'bits_sent',13,10,0
ta59 db 'bi_buf',13,10,0
ta60 db 'bi_valid',13,10,0
ta61 db 'high_water',13,10,0
sv_3:
dd deflate_state.strm,4,ta1
dd deflate_state.status,4,ta2
dd deflate_state.pending_buf,4,ta3
dd deflate_state.pending_buf_size,4,ta4
dd deflate_state.pending_out,4,ta5
dd deflate_state.pending,4,ta6
dd deflate_state.wrap,4,ta7
dd deflate_state.gzhead,4,ta8
dd deflate_state.gzindex,4,ta9
dd deflate_state.method,1,ta10
dd deflate_state.last_flush,4,ta11
dd deflate_state.w_size,4,ta12
dd deflate_state.w_bits,4,ta13
dd deflate_state.w_mask,4,ta14
dd deflate_state.window,4,ta15
dd deflate_state.window_size,4,ta16
dd deflate_state.prev,4,ta17
dd deflate_state.head,4,ta18
dd deflate_state.ins_h,4,ta19
dd deflate_state.hash_size,4,ta20
dd deflate_state.hash_bits,4,ta21
dd deflate_state.hash_mask,4,ta22
dd deflate_state.hash_shift,4,ta23
dd deflate_state.block_start,4,ta24
dd deflate_state.match_length,4,ta25
dd deflate_state.prev_match,4,ta26
dd deflate_state.match_available,4,ta27
dd deflate_state.strstart,4,ta28
dd deflate_state.match_start,4,ta29
dd deflate_state.lookahead,4,ta30
dd deflate_state.prev_length,4,ta31
dd deflate_state.max_chain_length,4,ta32
dd deflate_state.max_lazy_match,4,ta33
dd deflate_state.level,2,ta34
dd deflate_state.strategy,2,ta35
dd deflate_state.good_match,4,ta36
dd deflate_state.nice_match,4,ta37
dd deflate_state.dyn_ltree,((2*HEAP_SIZE) shl 16)+2,ta38
dd deflate_state.dyn_dtree,((2*(2*D_CODES+1)) shl 16)+2,ta39
dd deflate_state.bl_tree,((2*(2*BL_CODES+1)) shl 16)+2,ta40
dd deflate_state.l_desc,(3 shl 16)+4,ta41
dd deflate_state.d_desc,(3 shl 16)+4,ta42
dd deflate_state.bl_desc,(3 shl 16)+4,ta43
dd deflate_state.bl_count,((MAX_BITS+1) shl 16)+2,ta44
dd deflate_state.heap,((2*L_CODES+1) shl 16)+2,ta45
dd deflate_state.heap_len,4,ta46
dd deflate_state.heap_max,4,ta47
dd deflate_state.depth,((2*L_CODES+1) shl 16)+1,ta48
dd deflate_state.l_buf,4,ta49
dd deflate_state.lit_bufsize,4,ta50
dd deflate_state.last_lit,4,ta51
dd deflate_state.d_buf,4,ta52
dd deflate_state.opt_len,4,ta53
dd deflate_state.static_len,4,ta54
dd deflate_state.matches,4,ta55
dd deflate_state.insert,4,ta56
;if DEBUG eq 1
;dd deflate_state.compressed_len
;dd deflate_state.bits_sent
;end if
dd deflate_state.bi_buf,2,ta59
dd deflate_state.bi_valid,4,ta60
dd deflate_state.high_water,4,ta61
dd 0,0
align 4
proc dbg_print, fun:dword, mes:dword
pushad
mov eax,SF_BOARD
mov ebx,SSF_DEBUG_WRITE
mov esi,[fun]
cmp esi,0
je .end0
@@:
mov cl,byte[esi]
int 0x40
inc esi
cmp byte[esi],0
jne @b
mov cl,':'
int 0x40
mov cl,' '
int 0x40
.end0:
mov esi,[mes]
cmp esi,0
je .end_f
@@:
mov cl,byte[esi]
cmp cl,0
je .end_f
int 0x40
inc esi
jmp @b
.end_f:
popad
ret
endp
;input:
; zif - 1...8
align 4
proc hex_in_str, buf:dword,val:dword,zif:dword
pushad
mov edi,dword[buf]
mov ecx,dword[zif]
add edi,ecx
dec edi
mov ebx,dword[val]
.cycle:
mov al,bl
and al,0xf
cmp al,10
jl @f
add al,'a'-'0'-10
@@:
add al,'0'
mov byte[edi],al
dec edi
shr ebx,4
loop .cycle
popad
ret
endp
;output:
; eax = strlen
align 4
proc strlen, str1:dword
mov eax,[str1]
@@:
cmp byte[eax],0
je @f
inc eax
jmp @b
@@:
sub eax,[str1]
ret
endp
align 4
proc str_format_dbg, buf:dword, fmt:dword, p1:dword
pushad
mov esi,[fmt]
mov edi,[buf]
mov ecx,80-1
.cycle0:
lodsb
cmp al,'%'
jne .no_param
lodsb
dec ecx
cmp al,0
je .cycle0end
cmp al,'d'
je @f
cmp al,'u'
je @f
cmp al,'l'
je .end1
jmp .end0
.end1: ;%lu %lx
lodsb
dec ecx
cmp al,'u'
jne .end0
@@:
mov eax,[p1]
stdcall convert_int_to_str,ecx
xor al,al
repne scasb
dec edi
.end0:
loop .cycle0
.no_param:
stosb
cmp al,0
je .cycle0end
loop .cycle0
.cycle0end:
xor al,al
stosb
stdcall dbg_print,txt_sp,[buf]
popad
ret
endp
align 4
proc debug_fields, saddr:dword, form:dword
locals
nl_array dd ?
endl
pushad
mov edi,[saddr]
cmp edi,0
je .end_f
mcall SF_BOARD,SSF_DEBUG_WRITE,13
mcall ,,10
mov eax,[form]
align 4
.cycle0:
mov ebx,[eax+4]
mov ecx,ebx
and ebx,0xffff
cmp ebx,0
je .end_f
mov esi,ebx
shl ebx,1
shr ecx,16
cmp ecx,0
je .end0
;if array
stdcall dbg_print,0,[eax+8]
mov edx,61 ;size text line
mov dword[nl_array],0
.cycle2:
inc dword[nl_array]
sub edx,ebx
sub edx,2 ;': '
cmp edx,3
jg .cycle2
mov edx,edi
add edx,[eax]
push eax
.nl_i:
mov eax,[nl_array]
mov byte[ebx+txt_buf],0 ;конец числа
.cycle1:
stdcall hex_in_str,txt_buf,[edx],ebx
add edx,esi ;move next value
push edi
mov edi,txt_buf
cmp byte[edi],'0'
jne @f
inc edi
cmp byte[edi],'0'
jne @f
inc edi
cmp byte[edi],'0'
jne @f
inc edi
cmp byte[edi],'0'
jne @f
inc edi
@@:
cmp byte[edi],0
jne @f
dec edi
@@:
stdcall dbg_print,edi,0
pop edi
;stdcall dbg_print,txt_buf,0
dec eax
jz .nl
loop .cycle1
.nl:
push ebx ecx
mcall SF_BOARD,SSF_DEBUG_WRITE,13
mcall ,,10
pop ecx ebx
dec ecx
cmp ecx,0
jg .nl_i
pop eax
add eax,12
jmp .cycle0
.end0:
mov edx,edi
add edx,[eax]
stdcall hex_in_str,txt_buf,[edx],ebx
mov byte[ebx+txt_buf],0 ;конец числа
stdcall dbg_print,txt_buf,[eax+8]
add eax,12
jmp .cycle0
.end_f:
mcall SF_BOARD,SSF_DEBUG_WRITE,13
mcall ,,10
popad
ret
endp
;input:
; eax - число
; edi - буфер для строки
; len - длинна буфера
;output:
align 4
proc convert_int_to_str, len:dword
pushad
mov esi,[len]
add esi,edi
dec esi
call .str
popad
ret
endp
align 4
.str:
mov ecx,0x0a
cmp eax,ecx
jb @f
xor edx,edx
div ecx
push edx
call .str
pop eax
@@:
cmp edi,esi
jge @f
or al,0x30
stosb
mov byte[edi],0
@@:
ret