kolibrios-fun/drivers/ddk/string/_strncpy.S

28 lines
763 B
ArmAsm
Raw Normal View History

# _strncpy() Author: Kees J. Bot
# 1 Jan 1994
# char *_strncpy(char *s1, const char *s2, size_t ecx)
# Copy string s2 to s1.
#
.intel_syntax
.text
.globl __strncpy
.align 16
__strncpy:
mov edi, [ebp+12] # edi = string s2
xorb al, al # Look for a zero byte
mov edx, ecx # Save maximum count
cld
repne
scasb # Look for end of s2
sub edx, ecx # Number of bytes in s2 including null
xchg ecx, edx
mov esi, [ebp+12] # esi = string s2
mov edi, [ebp+8] # edi = string s1
rep
movsb # Copy bytes
ret