V10/libc/gen/memchr.s

Compare this file to the similar file:
Show the results in this format:

	.file	"memchr.s"
#	@(#)memchr.s	1.5
# Fast assembler language version of the following C-program
#			memchr
# which represents the `standard' for the C-library.

# Return the ptr in sp at which the character c appears;
#   NULL if not found in n chars; don't stop at \0.
#	
#	char *
#	memchr(sp, c, n)
#	register char *sp, c;
#	register int n;
#	{
#		while (--n >= 0)
#			if (*sp++ == c)
#				return (--sp);
#		return (0);
#	}
	.globl	_memchr
	.text
	.align	2
_memchr:
	.word	0x0000		# pgm uses regs 0,1,2,3
	movl	12(ap),r3	# n in r3
	bleq	L4		#	should be > 0
	movq	4(ap),r1	# s1 in r1; `c' in r2
L0:
	cmpl	$65535,r3	# is len VERY large?
	bgeq	L1		# hop if not
	locc	r2,$65535,(r1)	# look for `c' in this BLOCK
	bneq	L2		# hop if found (r1 points to it)
	subl2	$65535,r3
	jbr	L0
L1:
	locc	r2,r3,(r1)	# look for `c' in this BLOCK
	beql	L3		# fall through if found (r1 points to it)
L2:
	movl	r1,r0		# found one, return pointer to user
L3:
	ret			# return 0 if not found (r0 is 0 already)
L4:
	clrl	r0		# n <= 0, return 0 (not found)
	ret