forked from KolibriOS/kolibrios
e08c6968ef
git-svn-id: svn://kolibrios.org@9558 a494cfbc-eb01-0410-851d-a64ba20cac60
54 lines
805 B
NASM
54 lines
805 B
NASM
format ELF
|
|
|
|
section '.text' executable
|
|
include '../proc32.inc'
|
|
|
|
public memcpy
|
|
public memmove
|
|
|
|
proc memcpy c, to:dword,from:dword,count:dword
|
|
push esi
|
|
push edi
|
|
mov ecx,[count]
|
|
test ecx,ecx
|
|
jz no_copy_block
|
|
mov esi,[from]
|
|
mov edi,[to]
|
|
cld
|
|
rep movsb
|
|
no_copy_block:
|
|
|
|
pop edi
|
|
pop esi
|
|
mov eax, [to]
|
|
ret
|
|
endp
|
|
|
|
proc memmove c, to:dword,from:dword,count:dword
|
|
|
|
push esi
|
|
push edi
|
|
mov ecx,[count]
|
|
test ecx,ecx
|
|
jz no_copy_block_
|
|
mov esi,[from]
|
|
mov edi,[to]
|
|
cmp esi, edi
|
|
je no_copy_block_
|
|
jg copy_
|
|
add esi, ecx
|
|
add edi, ecx
|
|
dec esi
|
|
dec edi
|
|
std
|
|
copy_:
|
|
rep movsb
|
|
cld
|
|
no_copy_block_:
|
|
|
|
pop edi
|
|
pop esi
|
|
mov eax,[to]
|
|
ret
|
|
endp
|