Subversion Repositories Kolibri OS

Rev

Rev 1149 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1149 Rev 6673
Line 1... Line 1...
1
archiver.obj ýêñïîðòèðóåò äâå ôóíêöèè äëÿ ðàñïàêîâêè deflate-äàííûõ.
1
archiver.obj ýêñïîðòèðóåò äâå ôóíêöèè äëÿ ðàñïàêîâêè deflate-äàííûõ.
-
 
2
	À òàêæå ôóíêöèè: deflateInit, deflateInit2, deflateReset, deflate,
-
 
3
	deflateEnd äëÿ óïàêîâêè deflate-äàííûõ, ñäåëàííûå íà îñíîâå ñâîáîäíî
-
 
4
	ðàñïðîñòðàíÿåìîé áèáëèîòåêè zlib.
Line 2... Line 5...
2
 
5
 
3
Ïåðâàÿ: deflate_unpack
6
Ïåðâàÿ: deflate_unpack
4
Îáúÿâëåíèå â ñòèëå Ñè: void* __stdcall deflate_unpack(const void* data, unsigned* pLength);
7
Îáúÿâëåíèå â ñòèëå Ñè: void* __stdcall deflate_unpack(const void* data, unsigned* pLength);
5
Àðãóìåíòû:
8
Àðãóìåíòû:
Line 62... Line 65...
62
; è âîò ðåçóëüòàò
65
; è âîò ðåçóëüòàò
63
	mov	ecx, [esp+8]	; â [ecx] íóæíî çàïèñàòü äëèíó
66
	mov	ecx, [esp+8]	; â [ecx] íóæíî çàïèñàòü äëèíó
64
	mov	[ecx], length
67
	mov	[ecx], length
65
	mov	eax, buffer
68
	mov	eax, buffer
66
	ret	8
69
	ret	8
-
 
70
 
-
 
71
Àëãîðèòì äëÿ óïàêîâêè äàííûõ:
-
 
72
	1) Âûçîâ ôóíêöèè deflateInit èëè deflateInit2.
-
 
73
	2) Ðàçáèåíèå âõîäíîãî ïîòîêà äàííûõ íà ïîðöèè ïî 64 Êá.
-
 
74
		Äëÿ êàæäîãî áëîêà â 64 Êá â öèêëå äîëæåí äåëàòüñÿ âûçîâ ôóíêöèè deflate.
-
 
75
		Çà îäèí âûçîâ ôóíêöèè deflate ñæàòûõ äàííûõ îáðàçóåòñÿ íå áîëåå 16 Êá.
-
 
76
		Ò. å. åñëè ñæèìàåìûõ äàííûõ ìåíåå 16 Êá, òî èõ ìîæíî óïàêîâàòü çà îäèí âûçîâ deflate.
-
 
77
		Åñëè ñæèìàåìûõ äàííûõ ìåíåå 64 Êá, òî èõ ìîæíî óïàêîâàòü îðãàíèçîâàâ îäèí öèêë ñ âûçîâîì deflate.
-
 
78
		Åñëè ñæèìàåìûõ äàííûõ áîëåå 64 Êá, òî èõ ìîæíî óïàêîâàòü îðãàíèçîâàâ äâîéíîé öèêë ñ âûçîâîì deflate.
-
 
79
	3) Âûçîâ ôóíêöèè deflateEnd äëÿ î÷èñòêè ïàìÿòè.
-
 
80
Çàìå÷àíèÿ:
-
 
81
	Áîëüøèå óðîâíè ñæàòèÿ ïîêà ÷òî íå ïîääåðæèâàþòñÿ.
-
 
82
	Ôóíêöèÿ deflate íå êîðåêòíî ðàáîòàåò ñ ïàðàìåòðîì Z_NO_FLUSH.
-
 
83
	(Ïîêà ïðîáëåìà íå óñòðàíåíà ðåêîìåíäóåòñÿ âñåãäà ñòàâèòü Z_FINISH)