🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.arch
Article #13391

Re: String Handling -- Incompetence of run-time libraries

#13391
From: radford
Date: Thu, 02 Apr 1987 19:34
34 lines
1852 bytes
In article <6071@mimsy.UUCP>, chris@mimsy.UUCP (Chris Torek) writes:

> The proper way to speed strcpy() on a MicroVAX-II is no doubt to
> use the following assembly code:
> 
> 	_strcpy:.globl	_strcpy
> 		.word	0		# save no registers
> 		movq	4(ap),r1	# get s1 and s2 into r1 and r2
> 		movl	r1,r0		# save s1
> 	1:	movb	(r2)+,(r1)+	# *s1++ = *s2++
> 		bneq	1b		# loop until a zero is moved
> 		ret			# return original s1 in r0
> 
> Note that this is remarkably similar to the compiler's output
> for the original code, modified to have the proper return value:

> All one can improve on the locc-poor MicroVAX-II is the register
> usage and the parameter grabbing.  (c2, at least from 32V to 4.3BSD,
> will never turn two `movl's into a `movq'.  Ah well.)

Replacing your loop with:

	1:	movb	(r2)+,(r1)+
		bequ	2f
		movb	(r2)+,(r1)+
		bneq	1b
	2:

will almost certainly speed things up (say 15%). I haven't actually
tried it, but I've tried entirely analogous cases. Loop unrolling can
produce speed-up even when the instruction count is unchanged, if
taken branches are replaced by untaken branches. 

    Radford Neal
Technical Details
Message-ID: <864@vaxb.calgary.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watnot!watmath!clyde!rutgers!mit-eddie!uw-beaver!ubc-vision!alberta!calgary!radford
References: <15292@amdcad.UUCP> <978@ames.UUCP> <15694@sun.uucp> <6071@mimsy.UUCP>

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watnot!watmath!clyde!rutgers!mit-eddie!uw-beaver!ubc-vision!alberta!calgary!radford
From: radford@calgary.UUCP
Newsgroups: comp.arch,comp.lang.c
Subject: Re: String Handling -- Incompetence of run-time libraries
Message-ID: <864@vaxb.calgary.UUCP>
Date: Thu, 2-Apr-87 14:34:01 EST
Article-I.D.: vaxb.864
Posted: Thu Apr  2 14:34:01 1987
Date-Received: Sun, 5-Apr-87 01:24:57 EST
References: <15292@amdcad.UUCP> <978@ames.UUCP> <15694@sun.uucp> <6071@mimsy.UUCP>
Organization: U. of Calgary, Calgary, Ab.
Lines: 34
Keywords: instruction set architectures, strcpy
Summary: Unrolling will speed up strcpy