1 /* $OpenBSD: strlen.S,v 1.2 1996/09/27 06:47:51 mickey Exp $ */ 2 3 /* 4 * Written by J.T. Conklin <jtc@netbsd.org>. 5 * Public domain. 6 */ 7 8 #include <machine/asm.h> 9 10 ENTRY(strlen) 11 pushl %edi 12 movl 8(%esp),%edi /* string address */ 13 cld /* set search forward */ 14 xorl %eax,%eax /* set search for null terminator */ 15 movl $-1,%ecx /* set search for lots of characters */ 16 repne /* search! */ 17 scasb 18 notl %ecx /* get length by taking complement */ 19 leal -1(%ecx),%eax /* and subtracting one */ 20 popl %edi 21 ret