Re: faster strcpy()

Philip Blundell (pb@nexus.co.uk)
Fri, 24 Apr 1998 11:26:09 +0100


>It's something like subtracting 0x01010101 from the dword and oring with
>0x80808080 to detect the carry, but that's not quite it. Perhaps you do

/* The following magic check was designed by A. Mycroft. It yields a */
/* nonzero value if the argument w has a zero byte in it somewhere. The */
/* messy constants have been unfolded a bit in this code so that they */
/* get preloaded into registers before relevant loops. */

#ifdef _copywords
# define ONES_WORD 0x01010101
# define EIGHTS_WORD (ones_word << 7)
# define nullbyte_prologue_() \
int ones_word = ONES_WORD;
# define word_has_nullbyte(w) (((w) - ones_word) & ~(w) & EIGHTS_WORD)
#endif

p.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu