[Reduction] #223-224: memmove

This commit is contained in:
nmlgc 2014-08-27 19:47:14 +02:00
parent f3e9147459
commit 5a05e580e5
16 changed files with 107 additions and 1516 deletions

92
libs/BorlandC/movmem.asm Normal file
View File

@ -0,0 +1,92 @@
; void __cdecl movmem(const void *src, void *dst, unsigned int len)
_movmem proc DIST
@@src = DPTR_ 2 + dPtrSize
@@dst = DPTR_ 2 + (dPtrSize * 2)
@@len = word ptr 2 + (dPtrSize * 3)
push bp
mov bp, sp
push si
push di
ifndef __HUGE
push ds
endif
mov cx, word ptr [bp+@@dst+2]
mov bx, word ptr [bp+@@dst]
mov dx, word ptr [bp+@@src+2]
mov ax, word ptr [bp+@@src]
call N_PCMP@
jnb short @@forward
std
mov ax, 1
jmp short @@prepare
@@forward:
cld
xor ax, ax
@@prepare:
LDS_ si, [bp+@@src]
LES_ di, [bp+@@dst]
mov cx, [bp+@@len]
or ax, ax
jz short @@movit
add si, cx
dec si
add di, cx
dec di
@@movit:
test di, 1
jz short @@isAligned
jcxz short @@done
movsb
dec cx
@@isAligned:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short @@noOdd
add si, ax
add di, ax
movsb
@@noOdd:
@@done:
cld
if LDATA
pop ds
endif
pop di
pop si
pop bp
ret
_movmem endp
; void *__cdecl memmove(void *dest, const void *src, size_t n)
public _memmove
_memmove proc DIST
@@dst = DPTR_ 2 + dPtrSize
@@src = DPTR_ 2 + (dPtrSize * 2)
@@len = word ptr 2 + (dPtrSize * 3)
push bp
mov bp, sp
push si
push di
push [bp+@@len]
push word ptr [bp+@@dst+2]
push word ptr [bp+@@dst]
push word ptr [bp+@@src+2]
push word ptr [bp+@@src]
call _movmem
add sp, 0Ah
mov dx, word ptr [bp+@@dst+2]
mov ax, word ptr [bp+@@dst]
pop di
pop si
pop bp
ret
_memmove endp

View File

@ -8807,107 +8807,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
_src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+_src+2]
mov ax, word ptr [bp+_src]
call N_PCMP@
jnb short loc_4991
std
mov ax, 1
jmp short loc_4994
; ---------------------------------------------------------------------------
loc_4991:
cld
xor ax, ax
loc_4994:
lds si, [bp+_src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_49A7
add si, cx
dec si
add di, cx
dec di
loc_49A7:
test di, 1
jz short loc_49B1
jcxz short loc_49C0
movsb
dec cx
loc_49B1:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_49C0
add si, ax
add di, ax
movsb
loc_49C0:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
_src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+_src+2]
push word ptr [bp+_src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -8686,107 +8686,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_4C73
std
mov ax, 1
jmp short loc_4C76
; ---------------------------------------------------------------------------
loc_4C73:
cld
xor ax, ax
loc_4C76:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_4C89
add si, cx
dec si
add di, cx
dec di
loc_4C89:
test di, 1
jz short loc_4C93
jcxz short loc_4CA2
movsb
dec cx
loc_4C93:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_4CA2
add si, ax
add di, ax
movsb
loc_4CA2:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -12391,107 +12391,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
_src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+_src+2]
mov ax, word ptr [bp+_src]
call N_PCMP@
jnb short loc_5FE9
std
mov ax, 1
jmp short loc_5FEC
; ---------------------------------------------------------------------------
loc_5FE9:
cld
xor ax, ax
loc_5FEC:
lds si, [bp+_src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_5FFF
add si, cx
dec si
add di, cx
dec di
loc_5FFF:
test di, 1
jz short loc_6009
jcxz short loc_6018
movsb
dec cx
loc_6009:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_6018
add si, ax
add di, ax
movsb
loc_6018:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
_src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+_src+2]
push word ptr [bp+_src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -9271,107 +9271,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_67B6
std
mov ax, 1
jmp short loc_67B9
; ---------------------------------------------------------------------------
loc_67B6:
cld
xor ax, ax
loc_67B9:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_67CC
add si, cx
dec si
add di, cx
dec di
loc_67CC:
test di, 1
jz short loc_67D6
jcxz short loc_67E5
movsb
dec cx
loc_67D6:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_67E5
add si, ax
add di, ax
movsb
loc_67E5:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -5231,107 +5231,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_4BB6
std
mov ax, 1
jmp short loc_4BB9
; ---------------------------------------------------------------------------
loc_4BB6:
cld
xor ax, ax
loc_4BB9:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_4BCC
add si, cx
dec si
add di, cx
dec di
loc_4BCC:
test di, 1
jz short loc_4BD6
jcxz short loc_4BE5
movsb
dec cx
loc_4BD6:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_4BE5
add si, ax
add di, ax
movsb
loc_4BE5:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -5314,107 +5314,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_5203
std
mov ax, 1
jmp short loc_5206
; ---------------------------------------------------------------------------
loc_5203:
cld
xor ax, ax
loc_5206:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_5219
add si, cx
dec si
add di, cx
dec di
loc_5219:
test di, 1
jz short loc_5223
jcxz short loc_5232
movsb
dec cx
loc_5223:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_5232
add si, ax
add di, ax
movsb
loc_5232:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -5560,108 +5560,7 @@ sub_4C4C endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_4D38
std
mov ax, 1
jmp short loc_4D3B
; ---------------------------------------------------------------------------
loc_4D38:
cld
xor ax, ax
loc_4D3B:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_4D4E
add si, cx
dec si
add di, cx
dec di
loc_4D4E:
test di, 1
jz short loc_4D58
jcxz short loc_4D67
movsb
dec cx
loc_4D58:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_4D67
add si, ax
add di, ax
movsb
loc_4D67:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
; sub_1D189+138P
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -4774,107 +4774,7 @@ sub_4B43 endp ; sp-analysis failed
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_4C06
std
mov ax, 1
jmp short loc_4C09
; ---------------------------------------------------------------------------
loc_4C06:
cld
xor ax, ax
loc_4C09:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_4C1C
add si, cx
dec si
add di, cx
dec di
loc_4C1C:
test di, 1
jz short loc_4C26
jcxz short loc_4C35
movsb
dec cx
loc_4C26:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_4C35
add si, ax
add di, ax
movsb
loc_4C35:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -5193,107 +5193,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_4EE8
std
mov ax, 1
jmp short loc_4EEB
; ---------------------------------------------------------------------------
loc_4EE8:
cld
xor ax, ax
loc_4EEB:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_4EFE
add si, cx
dec si
add di, cx
dec di
loc_4EFE:
test di, 1
jz short loc_4F08
jcxz short loc_4F17
movsb
dec cx
loc_4F08:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_4F17
add si, ax
add di, ax
movsb
loc_4F17:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -7803,107 +7803,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_6144
std
mov ax, 1
jmp short loc_6147
; ---------------------------------------------------------------------------
loc_6144:
cld
xor ax, ax
loc_6147:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_615A
add si, cx
dec si
add di, cx
dec di
loc_615A:
test di, 1
jz short loc_6164
jcxz short loc_6173
movsb
dec cx
loc_6164:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_6173
add si, ax
add di, ax
movsb
loc_6173:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -4686,107 +4686,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_56AC
std
mov ax, 1
jmp short loc_56AF
; ---------------------------------------------------------------------------
loc_56AC:
cld
xor ax, ax
loc_56AF:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_56C2
add si, cx
dec si
add di, cx
dec di
loc_56C2:
test di, 1
jz short loc_56CC
jcxz short loc_56DB
movsb
dec cx
loc_56CC:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_56DB
add si, ax
add di, ax
movsb
loc_56DB:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -5299,107 +5299,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length= word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_5D6C
std
mov ax, 1
jmp short loc_5D6F
; ---------------------------------------------------------------------------
loc_5D6C:
cld
xor ax, ax
loc_5D6F:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_5D82
add si, cx
dec si
add di, cx
dec di
loc_5D82:
test di, 1
jz short loc_5D8C
jcxz short loc_5D9B
movsb
dec cx
loc_5D8C:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_5D9B
add si, ax
add di, ax
movsb
loc_5D9B:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -8189,107 +8189,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_6470
std
mov ax, 1
jmp short loc_6473
; ---------------------------------------------------------------------------
loc_6470:
cld
xor ax, ax
loc_6473:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_6486
add si, cx
dec si
add di, cx
dec di
loc_6486:
test di, 1
jz short loc_6490
jcxz short loc_649F
movsb
dec cx
loc_6490:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_649F
add si, ax
add di, ax
movsb
loc_649F:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -5465,107 +5465,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_5B98
std
mov ax, 1
jmp short loc_5B9B
; ---------------------------------------------------------------------------
loc_5B98:
cld
xor ax, ax
loc_5B9B:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_5BAE
add si, cx
dec si
add di, cx
dec di
loc_5BAE:
test di, 1
jz short loc_5BB8
jcxz short loc_5BC7
movsb
dec cx
loc_5BB8:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_5BC7
add si, ax
add di, ax
movsb
loc_5BC7:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================

View File

@ -4981,107 +4981,7 @@ _getenv endp
include libs/BorlandC/memcmp.asm
include libs/BorlandC/memcpy.asm
include libs/BorlandC/memset.asm
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void __cdecl movmem(const void *src, void *dest, unsigned int length)
_movmem proc far
src = dword ptr 6
dest = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push ds
mov cx, word ptr [bp+dest+2]
mov bx, word ptr [bp+dest]
mov dx, word ptr [bp+src+2]
mov ax, word ptr [bp+src]
call N_PCMP@
jnb short loc_59BC
std
mov ax, 1
jmp short loc_59BF
; ---------------------------------------------------------------------------
loc_59BC:
cld
xor ax, ax
loc_59BF:
lds si, [bp+src]
les di, [bp+dest]
mov cx, [bp+_length]
or ax, ax
jz short loc_59D2
add si, cx
dec si
add di, cx
dec di
loc_59D2:
test di, 1
jz short loc_59DC
jcxz short loc_59EB
movsb
dec cx
loc_59DC:
sub si, ax
sub di, ax
shr cx, 1
rep movsw
jnb short loc_59EB
add si, ax
add di, ax
movsb
loc_59EB:
cld
pop ds
pop di
pop si
pop bp
retf
_movmem endp
; =============== S U B R O U T I N E =======================================
; Attributes: library function bp-based frame
; void *__cdecl memmove(void *dest, const void *src, size_t n)
_memmove proc far
dest = dword ptr 6
src = dword ptr 0Ah
_length = word ptr 0Eh
push bp
mov bp, sp
push si
push di
push [bp+_length] ; length
push word ptr [bp+dest+2]
push word ptr [bp+dest] ; dest
push word ptr [bp+src+2]
push word ptr [bp+src] ; src
push cs
call near ptr _movmem
add sp, 0Ah
mov dx, word ptr [bp+dest+2]
mov ax, word ptr [bp+dest]
pop di
pop si
pop bp
retf
_memmove endp
include libs/BorlandC/movmem.asm
; =============== S U B R O U T I N E =======================================