[libc] Reduce overall code size by externalising strlen()

Typical saving is 5-20 bytes in each file using strlen().

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2012-11-05 00:25:25 +00:00
parent 06766875ad
commit de20c526e6
2 changed files with 20 additions and 12 deletions

View File

@@ -105,6 +105,24 @@ void * __memmove ( void *dest, const void *src, size_t len ) {
}
}
/**
* Calculate length of string
*
* @v string String
* @ret len Length (excluding NUL)
*/
size_t strlen ( const char *string ) {
const char *discard_D;
size_t len_plus_one;
__asm__ __volatile__ ( "repne scasb\n\t"
"not %1\n\t"
: "=&D" ( discard_D ), "=&c" ( len_plus_one )
: "0" ( string ), "1" ( -1UL ), "a" ( 0 ) );
return ( len_plus_one - 1 );
}
/**
* Compare strings (up to a specified length)
*