2.11BSD/src/lib/libc/pdp/gen/strcmp.s

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

/*
 * Copyright (c) 1987 Regents of the University of California.
 * All rights reserved.  The Berkeley software License Agreement
 * specifies the terms and conditions for redistribution.
 */

#ifdef LIBC_SCCS
	<@(#)strcmp.s	1.1 (Berkeley) 1/21/87\0>
	.even
#endif LIBC_SCCS

/*
 * Compare string s1 lexicographically to string s2.
 * Return:
 *	0	s1 == s2
 *	> 0	s1 > s2
 *	< 0	s2 < s2
 *
 * strcmp(s1, s2)
 *	char *s1, *s2;
 */
#include "DEFS.h"

ENTRY(strcmp)
	mov	2(sp),r0	/ r0 = s1
	mov	4(sp),r1	/ r1 = s2
1:
	cmpb	(r0)+,(r1)	/ compare the two strings
	bne	2f		/ stop on first mismatch
	tstb	(r1)+		/ but don't pass end of either string
	bne	1b
	clr	r0		/ fell off end of strings with '\0' == '\0`
	rts	pc		/   - success! return zero
2:
	movb	-(r0),r0	/ mismatch, return *s1 - *s2 ...
	movb	(r1),r1		/ (no subb instruction ...)
	sub	r1,r0
	rts	pc