Subversion Repositories Kolibri OS

Rev

Rev 893 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 893 Rev 920
Line 272... Line 272...
272
.repmovsbz:
272
.repmovsbz:
273
	push	esi
273
	push	esi
274
.repmovsbr:
274
.repmovsbr:
275
        mov     eax, [ebp+.rep0]
275
        mov     eax, [ebp+.rep0]
276
        cmp     eax, [ebp+.dictSize]
276
        cmp     eax, [ebp+.dictSize]
277
        jae     return.err
277
        ja      return.err
278
	mov	esi, edi
278
	mov	esi, edi
279
	sub	esi, eax
279
	sub	esi, eax
280
        mov     eax, [ebp+streamInfo.bufPtr]
280
        mov     eax, [ebp+streamInfo.bufPtr]
281
        sub     eax, esi
281
        sub     eax, esi
282
        ja      .repmovsb0
282
        ja      .repmovsb0
283
	mov	eax, [ebp+.outEnd]
283
	mov	eax, [ebp+.outEnd]
284
        sub     eax, edi
284
        sub     eax, edi
-
 
285
        jz      .done1
285
        push    ecx
286
        push    ecx
286
        cmp     ecx, eax
287
        cmp     ecx, eax
287
        jb      @f
288
        jb      @f
288
        mov     ecx, eax
289
        mov     ecx, eax
289
@@:
290
@@:
290
        sub     [esp], ecx
291
        sub     [esp], ecx
291
	rep	movsb
292
	rep	movsb
292
        pop     ecx
293
        pop     ecx
293
        jz      .repmovsb1
294
        jz      .repmovsb1
-
 
295
.done1:
294
        pop     [ebp+.inPtr]
296
        pop     [ebp+.inPtr]
295
	mov	[ebp+.state], ebx
297
	mov	[ebp+.state], ebx
296
        mov     [ebp+.ecx], ecx
298
        mov     [ebp+.ecx], ecx
297
        mov     [ebp+.continue], .restart_repmovsb
299
        mov     [ebp+.continue], .restart_repmovsb
298
        popad
300
        popad
299
        ret
301
        ret
300
.repmovsb0:
302
.repmovsb0:
301
	mov	edx, [ebp+.dictSize]
303
	mov	edx, [ebp+.dictSize]
302
	cmp	edx, [ebp+streamInfo.bufSize]
304
;	cmp	edx, [ebp+streamInfo.bufSize]
303
	jnz	return.err
305
;	jnz	return.err
304
        add     esi, edx
306
        add     esi, edx
305
        push    ecx
307
        push    ecx
306
        cmp     ecx, eax
308
        cmp     ecx, eax
307
        jb      @f
309
        jb      @f
308
        mov     ecx, eax
310
        mov     ecx, eax
309
@@:
311
@@:
310
	mov	eax, [ebp+.outEnd]
312
	mov	eax, [ebp+.outEnd]
311
	sub	eax, edi
313
	sub	eax, edi
-
 
314
	jz      .done2
312
	cmp	ecx, eax
315
	cmp	ecx, eax
313
	jb	@f
316
	jb	@f
314
	mov	ecx, eax
317
	mov	ecx, eax
315
@@:
318
@@:
316
        sub     [esp], ecx
319
        sub     [esp], ecx
Line 320... Line 323...
320
.repmovsb1:
323
.repmovsb1:
321
        pop     esi
324
        pop     esi
322
        mov     al, [edi-1]
325
        mov     al, [edi-1]
323
        mov     [ebp+.previousByte], al
326
        mov     [ebp+.previousByte], al
324
        jmp     .main_loop
327
        jmp     .main_loop
-
 
328
.done2:
-
 
329
	pop	ecx
-
 
330
	jmp	.done1
325
.main_loop_done:
331
.main_loop_done:
326
	mov	[ebp+.state], ebx
332
	mov	[ebp+.state], ebx
327
        mov     [ebp+.continue], .main_loop
333
        mov     [ebp+.continue], .main_loop
328
        mov     [ebp+.inPtr], esi
334
        mov     [ebp+.inPtr], esi
329
        popad
335
        popad