1,27 → 1,22 |
# _strncpy() Author: Kees J. Bot |
# 1 Jan 1994 |
/* _strncpy() Author: Kees J. Bot */ |
/* 1 Jan 1994 */ |
|
# char *_strncpy(char *s1, const char *s2, size_t ecx) |
# Copy string s2 to s1. |
# |
/* char *_strncpy(char *s1, const char *s2, size_t ecx) */ |
/* Copy string s2 to s1. */ |
/* */ |
#include "asm.h" |
|
.intel_syntax |
ENTRY(_strncpy) |
movl 12(%ebp), %edi /* edi = string s2 */ |
xorb %al, %al /* Look for a zero byte */ |
movl %ecx, %edx /* Save maximum count */ |
cld |
|
.text |
.globl __strncpy |
.align 16 |
repne scasb /* Look for end of s2 */ |
subl %ecx, %edx /* Number of bytes in s2 including null */ |
xchgl %edx, %ecx |
movl 12(%ebp), %esi /* esi = string s2 */ |
movl 8(%ebp), %edi /* edi = string s1 */ |
|
__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 |
rep movsb /* Copy bytes */ |
ret |