0,0 → 1,30 |
# _strnlen() Author: Kees J. Bot 1 Jan 1994 |
|
# size_t _strnlen(const char *s, size_t ecx) |
# Return the length of a string. |
|
.intel_syntax |
|
.globl __strnlen |
|
.text |
.align 16 |
__strnlen: |
push ebp |
mov ebp, esp |
push edi |
mov edi, [ebp+8] # edi = string |
xorb al, al # Look for a zero byte |
mov edx, ecx # Save maximum count |
cmpb cl, 1 # 'Z' bit must be clear if ecx = 0 |
cld |
repne |
scasb # Look for zero |
jne no0 |
inc ecx # Don't count zero byte |
no0: |
mov eax, edx |
sub eax, ecx # Compute bytes scanned |
pop edi |
pop ebp |
ret |