Fast strcpy nitpicking

John Gilmore gnu at hoptoad.uucp
Mon Sep 29 15:20:54 AEST 1986

In article <7503 at sun.uucp>, guy at sun.uucp (Guy Harris) writes:
>       The following, courtesy of John Gilmore and Vaughan Pratt, is what is
> actually used in the (3.2 version of) "strcpy", etc.:
> 	moveq	#-1,d1		| maximum possible (16-bit) count
> hardloop:
> 	movb	FROM at +,TO at +	| copy...
> 	dbeq	d1,hardloop	| until we copy a null or the count is -1
> 	bne	hardloop	| if not-null, continue copying with count
> 				| freshly initialized to -1

Gee, Guy, something must have gotten lost in the translation.  I never
suggested that you needed a moveq there.  It works great no matter what
value happens to be in d1.  Unless d1 always has a small value at that point
in the code, you'll hit the end of the string before the dbra expires,
saving an instruction.  					:-)

PS:  My heart really goes out to the poor guy who wrote his own strcpy
and it broke.  Gee, he'll have to #define it to the one that came with 
the system.  Tears are streaming down my face.			;-)
John Gilmore  {sun,ptsfa,lll-crg,ihnp4}!hoptoad!gnu   jgilmore at
		     May the Source be with you!

More information about the Comp.lang.c mailing list