0,0 → 1,44 |
# strncmp() Author: Kees J. Bot 1 Jan 1994 |
|
# int strncmp(const char *s1, const char *s2, size_t ecx) |
# Compare two strings. |
# |
|
.intel_syntax |
|
.globl __strncmp |
|
.text |
.align 16 |
__strncmp: |
push ebp |
mov ebp, esp |
|
push esi |
push edi |
|
test ecx, ecx # Max length is zero? |
je done |
|
mov esi, [ebp+8] # esi = string s1 |
mov edi, [ebp+12] # edi = string s2 |
cld |
compare: |
cmpsb # Compare two bytes |
jne done |
|
cmpb [esi-1], 0 # End of string? |
je done |
|
dec ecx # Length limit reached? |
jne compare |
done: |
seta al # al = (s1 > s2) |
setb ah # ah = (s1 < s2) |
subb al, ah |
movsx eax, al # eax = (s1 > s2) - (s1 < s2), i.e. -1, 0, 1 |
|
pop edi |
pop esi |
pop ebp |
ret |