Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6672 → Rev 6673

/programs/fs/kfar/trunk/kfar_arc/archiver_deflate.txt
1,4 → 1,7
archiver.obj ýêñïîðòèðóåò äâå ôóíêöèè äëÿ ðàñïàêîâêè deflate-äàííûõ.
À òàêæå ôóíêöèè: deflateInit, deflateInit2, deflateReset, deflate,
deflateEnd äëÿ óïàêîâêè deflate-äàííûõ, ñäåëàííûå íà îñíîâå ñâîáîäíî
ðàñïðîñòðàíÿåìîé áèáëèîòåêè zlib.
 
Ïåðâàÿ: deflate_unpack
Îáúÿâëåíèå â ñòèëå Ñè: void* __stdcall deflate_unpack(const void* data, unsigned* pLength);
64,3 → 67,17
mov [ecx], length
mov eax, buffer
ret 8
 
Àëãîðèòì äëÿ óïàêîâêè äàííûõ:
1) Âûçîâ ôóíêöèè deflateInit èëè deflateInit2.
2) Ðàçáèåíèå âõîäíîãî ïîòîêà äàííûõ íà ïîðöèè ïî 64 Êá.
Äëÿ êàæäîãî áëîêà â 64 Êá â öèêëå äîëæåí äåëàòüñÿ âûçîâ ôóíêöèè deflate.
Çà îäèí âûçîâ ôóíêöèè deflate ñæàòûõ äàííûõ îáðàçóåòñÿ íå áîëåå 16 Êá.
Ò. å. åñëè ñæèìàåìûõ äàííûõ ìåíåå 16 Êá, òî èõ ìîæíî óïàêîâàòü çà îäèí âûçîâ deflate.
Åñëè ñæèìàåìûõ äàííûõ ìåíåå 64 Êá, òî èõ ìîæíî óïàêîâàòü îðãàíèçîâàâ îäèí öèêë ñ âûçîâîì deflate.
Åñëè ñæèìàåìûõ äàííûõ áîëåå 64 Êá, òî èõ ìîæíî óïàêîâàòü îðãàíèçîâàâ äâîéíîé öèêë ñ âûçîâîì deflate.
3) Âûçîâ ôóíêöèè deflateEnd äëÿ î÷èñòêè ïàìÿòè.
Çàìå÷àíèÿ:
Áîëüøèå óðîâíè ñæàòèÿ ïîêà ÷òî íå ïîääåðæèâàþòñÿ.
Ôóíêöèÿ deflate íå êîðåêòíî ðàáîòàåò ñ ïàðàìåòðîì Z_NO_FLUSH.
(Ïîêà ïðîáëåìà íå óñòðàíåíà ðåêîìåíäóåòñÿ âñåãäà ñòàâèòü Z_FINISH)
/programs/fs/kfar/trunk/kfar_arc/kfar_arc.asm
3,7 → 3,7
; target platform: KolibriOS
; compiler: FASM 1.67.14
; version: 0.17
; last update: 2009-09-03 (Sep 03, 2009)
; last update: 2016-11-04 (Nov 04, 2016)
; minimal KFar version: 0.43
; minimal kernel: no limit
;
32,6 → 32,7
include '7zaes.inc' ; AES cryptor for *.7z
include 'zip.inc' ; *.zip
include 'deflate.inc' ; Deflate[64] decoder for *.7z and *.zip
include '../zlib/zlib.asm' ; deflate coder
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;; Interface for KFar ;;;;;;;;;;;;;;
1242,9 → 1243,9
mov ecx, 10000h
jmp [eax+streamInfo.fillBuf]
@@:
push 68
push SF_SYS_MISC
pop eax
push 20
push SSF_MEM_REALLOC
pop ebx
int 0x40
test eax, eax
1280,9 → 1281,9
jnz @f
inc ecx
@@:
push 68
push SF_SYS_MISC
pop eax
push 20
push SSF_MEM_REALLOC
pop ebx
int 0x40
test eax, eax
1297,9 → 1298,9
and ecx, 3
rep movsb
push eax
push 68
push SF_SYS_MISC
pop eax
push 13
push SSF_MEM_FREE
pop ebx
lea ecx, [ebp-streamInfo.size-8]
int 40h
1306,9 → 1307,9
pop eax
jmp .ret
.nomem:
push 68
push SF_SYS_MISC
pop eax
push 13
push SSF_MEM_FREE
pop ebx
test edx, edx
jz @f
1342,9 → 1343,9
ret
 
mypgalloc:
push 68
push SF_SYS_MISC
pop eax
push 12
push SSF_MEM_ALLOC
pop ebx
int 0x40
ret
1371,6 → 1372,13
dd aClose, myclose
dd aDeflateUnpack, deflate_unpack
dd aDeflateUnpack2,deflate_unpack2
dd adeflateInit, deflateInit
dd adeflateInit2, deflateInit2
dd adeflateReset, deflateReset
dd adeflate, deflate
dd adeflateEnd, deflateEnd
dd azError, zError
dd acalc_crc32, calc_crc32
dd 0
 
; exported names
1389,6 → 1397,13
aClose db 'close',0
aDeflateUnpack db 'deflate_unpack',0
aDeflateUnpack2 db 'deflate_unpack2',0
adeflateInit db 'deflateInit',0
adeflateInit2 db 'deflateInit2',0
adeflateReset db 'deflateReset',0
adeflate db 'deflate',0
adeflateEnd db 'deflateEnd',0
azError db 'zError',0
acalc_crc32 db 'calc_crc32',0
 
; common strings
if lang eq ru
1512,6 → 1527,8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;; Uninitialized data ;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
purge data ;used in 'macros.inc'
purge section ;used in 'macros.inc'
 
section '.udata' data readable writable align 16
kfar_info dd ?