date and time created 84/11/01 23:19:40 by sam
authorSam Leffler <sam@ucbvax.Berkeley.EDU>
Fri, 2 Nov 1984 15:19:40 +0000 (07:19 -0800)
committerSam Leffler <sam@ucbvax.Berkeley.EDU>
Fri, 2 Nov 1984 15:19:40 +0000 (07:19 -0800)
SCCS-vsn: lib/libc/vax/string/strcmp.s 4.1

usr/src/lib/libc/vax/string/strcmp.s [new file with mode: 0644]

diff --git a/usr/src/lib/libc/vax/string/strcmp.s b/usr/src/lib/libc/vax/string/strcmp.s
new file mode 100644 (file)
index 0000000..2b7f4d4
--- /dev/null
@@ -0,0 +1,34 @@
+/*     strcmp.s        4.1     84/11/01        */
+
+/*
+ * Compare string s1 lexicographically to string s2.
+ * Return:
+ *     0       s1 == s2
+ *     > 0     s1 > s2
+ *     < 0     s2 < s2
+ *
+ * strcmp(s1, s2)
+ *     char *s1, *s2;
+ */
+       .globl  _strcmp
+
+_strcmp:
+       .word   0x0
+       movq    4(ap),r3        # r3 = s1; r4 = s2
+1:
+       locc    $0,$65535,(r4)  # look for '\0' in s2
+       bneq    2f
+       cmpc3   $65535,(r4),(r3)# compare full block
+       bneq    3f
+       movl    r1,r4           # advance s2
+       jbr     1b              # matched, next block
+2:
+       subl2   r4,r1           # calculate length
+       incl    r1              # +1 for '\0'
+       cmpc3   r1,(r4),(r3)    # compare remainder
+       bneq    3f
+       ret                     # r0 = 0 already
+3:
+       subb3   (r1),(r3),r0    # r0 = *s1 - *s2
+       cvtbl   r0,r0
+       ret