2.11BSD/src/lib/libc/pdp/gen/strcmp.s
/*
* 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