mirror of
https://github.com/emmanuel-marty/lzsa.git
synced 2024-11-26 17:49:19 +00:00
Merge pull request #9 from MobyGamer/decompressor/8086_speed
Additional 1% speedup from deferring work
This commit is contained in:
commit
467cd1970f
@ -67,14 +67,13 @@ lzsa1_start:
|
|||||||
mov dx,ax ;keep token in dl
|
mov dx,ax ;keep token in dl
|
||||||
|
|
||||||
and al,070H ;isolate literals length in token (LLL)
|
and al,070H ;isolate literals length in token (LLL)
|
||||||
segcs xlat ;shift literals length into place
|
jz @@check_offset_size ;if LLL=0, we have no literals; goto match
|
||||||
|
cmp al,070H ;LITERALS_RUN_LEN?
|
||||||
cmp al,07H ;LITERALS_RUN_LEN?
|
|
||||||
jne @@got_literals ;no, we have full count from token; go copy
|
jne @@got_literals ;no, we have full count from token; go copy
|
||||||
|
|
||||||
lodsb ;grab extra length byte
|
lodsb ;grab extra length byte
|
||||||
add al,07H ;add LITERALS_RUN_LEN
|
add al,07H ;add LITERALS_RUN_LEN
|
||||||
jnc @@got_literals ;if no overflow, we have full count; go copy
|
jnc @@got_literals_exact ;if no overflow, we have full count
|
||||||
jne @@mid_literals
|
jne @@mid_literals
|
||||||
|
|
||||||
@@big_literals:
|
@@big_literals:
|
||||||
@ -97,6 +96,8 @@ lzsa1_start:
|
|||||||
jmp @@check_offset_size
|
jmp @@check_offset_size
|
||||||
|
|
||||||
@@got_literals:
|
@@got_literals:
|
||||||
|
segcs xlat ;shift literals length into place
|
||||||
|
@@got_literals_exact:
|
||||||
xchg cx,ax
|
xchg cx,ax
|
||||||
rep movsb ;copy cx literals from ds:si to es:di
|
rep movsb ;copy cx literals from ds:si to es:di
|
||||||
@@check_offset_size:
|
@@check_offset_size:
|
||||||
@ -233,3 +234,5 @@ END
|
|||||||
; reverse 16-bit len compar shuttle 102000 alice 59263 robotron 364460 --- rb
|
; reverse 16-bit len compar shuttle 102000 alice 59263 robotron 364460 --- rb
|
||||||
; jcxz for EOD detection no change to speed, but is 1 byte shorter +++
|
; jcxz for EOD detection no change to speed, but is 1 byte shorter +++
|
||||||
; force movsw for literals shuttle 107183 alice 62555 robotron 379524 --- rb
|
; force movsw for literals shuttle 107183 alice 62555 robotron 379524 --- rb
|
||||||
|
; defer shr4 until necessry shuttle 102069 alice 60236 robotron 364096 --- rb
|
||||||
|
; skip literals if LLL=0 shuttle 98655 alice 57849 robotron 363358 --- rb
|
||||||
|
Loading…
Reference in New Issue
Block a user