| /* $OpenBSD: strlen.S,v 1.3 2005/08/07 11:30:38 espie Exp $ */ | |
| /* | |
| * Written by J.T. Conklin <jtc@netbsd.org>. | |
| * Public domain. | |
| */ | |
| #include <machine/asm.h> | |
| ENTRY(strlen) | |
| pushl %edi | |
| movl 8(%esp),%edi /* string address */ | |
| cld /* set search forward */ | |
| xorl %eax,%eax /* set search for null terminator */ | |
| movl $-1,%ecx /* set search for lots of characters */ | |
| repne /* search! */ | |
| scasb | |
| notl %ecx /* get length by taking complement */ | |
| leal -1(%ecx),%eax /* and subtracting one */ | |
| popl %edi | |
| ret |