1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00

fixes for the i386 nrv2b & nrv2d stubs

This commit is contained in:
László Molnár 2006-07-17 16:56:17 +02:00
parent 1b2837915d
commit e881e008b8
2 changed files with 66 additions and 75 deletions

View File

@ -48,7 +48,7 @@
jnz 1f
.endif
mov ebx, [esi]
sub esi, byte -4
sub esi, -4
adc ebx, ebx
1:
.endm
@ -63,7 +63,6 @@ decompr_literals_n2b:
movsb
section N2BFAS10
jmps dcl1_n2b
.balign 8
section N2BFAS11
decompr_literalb_n2b:
mov al, [esi]
@ -80,14 +79,14 @@ dcl1_n2b:
getbit 32
dcl2_n2b:
section N2BSMA20
jc decompr_literals_n2b
jcs decompr_literals_n2b
xor eax, eax
inc eax
section N2BFAS20
#ifndef UPX102
mov al, [edi] // force data cache allocate (PentiumPlain or MMX)
#endif
jc decompr_literalb_n2b
jcs decompr_literalb_n2b
mov eax, 1
section N2BDEC20
loop1_n2b:
@ -95,13 +94,13 @@ loop1_n2b:
adc eax, eax
section N2BSMA30
getbit 1
jnc loop1_n2b
jncs loop1_n2b
section N2BFAS30
add ebx, ebx
jnc loop1_n2b
jncs loop1_n2b
jnz loopend1_n2b
getbit 32
jnc loop1_n2b
jncs loop1_n2b
loopend1_n2b:
section N2BDEC30
xor ecx, ecx
@ -111,29 +110,28 @@ section N2BDEC30
mov al, [esi]
inc esi
xor eax, -1
jz decompr_end_n2b
jzs decompr_end_n2b
mov ebp, eax
decompr_ebpeax_n2b:
getbit 1
adc ecx, ecx
getbit 1
adc ecx, ecx
jnz decompr_got_mlen_n2b
jnzs decompr_got_mlen_n2b
inc ecx
loop2_n2b:
getbit 1
adc ecx, ecx
section N2BSMA40
getbit 1
jnc loop2_n2b
jncs loop2_n2b
section N2BFAS40
add ebx, ebx
jnc loop2_n2b
jncs loop2_n2b
jnz loopend2_n2b
getbit 32
jnc loop2_n2b
jncs loop2_n2b
loopend2_n2b:
section N2BDUMM1
section N2BSMA50
inc ecx
inc ecx
@ -164,7 +162,7 @@ section N2BFAS60
#ifndef UPX102
mov al, [edi+ecx] // force data cache allocate (PentiumPlain or MMX)
#endif
jbe decompr_copy4_n2b
jbes decompr_copy4_n2b
loop3_n2b:
mov al, [edx]
inc edx
@ -174,7 +172,6 @@ loop3_n2b:
jnz loop3_n2b
jmp decompr_loop_n2b
section N2BFAS61
.balign 4
decompr_copy4_n2b:
mov eax, [edx]
add edx, 4
@ -186,7 +183,6 @@ decompr_copy4_n2b:
jmp decompr_loop_n2b
section N2BDEC60
decompr_end_n2b:
section NRV2BEND
// vi:ts=8:et

View File

@ -64,16 +64,14 @@ decompr_literals_n2d:
movsb
section N2DFAS10
jmps dcl1_n2d
.balign 8
section N2DFAS11
decompr_literalb_n2d:
mov al, [esi]
inc esi
mov [edi], al
inc edi
section N2DDEC10
decompr_loop_n2d:
add ebx, ebx
jnz dcl2_n2d
@ -81,14 +79,14 @@ dcl1_n2d:
getbit 32
dcl2_n2d:
section N2DSMA20
jc decompr_literals_n2d
jcs decompr_literals_n2d
xor eax, eax
inc eax
section N2DFAS20
#ifndef UPX102
mov al, [edi] // force data cache allocate (PentiumPlain or MMX)
#endif
jc decompr_literalb_n2d
jcs decompr_literalb_n2d
mov eax, 1
section N2DDEC20
loop1_n2d:
@ -96,13 +94,13 @@ loop1_n2d:
adc eax, eax
section N2DSMA30
getbit 1
jc loopend1_n2d
jcs loopend1_n2d
section N2DFAS30
add ebx, ebx
jnc loopcontinue1_n2d
jnz loopend1_n2d
jnzs loopend1_n2d
getbit 32
jc loopend1_n2d
jcs loopend1_n2d
loopcontinue1_n2d:
section N2DDEC30
dec eax
@ -117,7 +115,7 @@ loopend1_n2d:
mov al, [esi]
inc esi
xor eax, -1
jz decompr_end_n2d
jzs decompr_end_n2d
sar eax, 1 // shift low-bit into carry
mov ebp, eax
jmps decompr_ebpeax_n2d
@ -127,22 +125,21 @@ decompr_ebpeax_n2d:
adc ecx, ecx
getbit 1
adc ecx, ecx
jnz decompr_got_mlen_n2d
jnzs decompr_got_mlen_n2d
inc ecx
loop2_n2d:
getbit 1
adc ecx, ecx
section N2DSMA40
getbit 1
jnc loop2_n2d
jncs loop2_n2d
section N2DFAS40
add ebx, ebx
jnc loop2_n2d
jncs loop2_n2d
jnz loopend2_n2d
getbit 32
jnc loop2_n2d
jncs loop2_n2d
loopend2_n2d:
section N2DDUMM1
section N2DSMA50
inc ecx
inc ecx
@ -173,7 +170,7 @@ section N2DFAS60
#ifndef UPX102
mov al, [edi+ecx] // force data cache allocate (PentiumPlain or MMX)
#endif
jbe decompr_copy4_n2d
jbes decompr_copy4_n2d
loop3_n2d:
mov al, [edx]
inc edx
@ -183,7 +180,6 @@ loop3_n2d:
jnz loop3_n2d
jmp decompr_loop_n2d
section N2DFAS61
.balign 4
decompr_copy4_n2d:
mov eax, [edx]
add edx, 4
@ -195,7 +191,6 @@ decompr_copy4_n2d:
jmp decompr_loop_n2d
section N2DDEC60
decompr_end_n2d:
section NRV2DEND
// vi:ts=8:et