kolibrios/programs/develop/ktcc/trunk/libc/string/memmove.asm
Magomed Kostoev (mkostoevr) 71b99beec5 Make libck project self-containing.
git-svn-id: svn://kolibrios.org@7855 a494cfbc-eb01-0410-851d-a64ba20cac60
2020-05-03 08:09:36 +00:00

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