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

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

diff --git a/usr/src/lib/libc/vax/string/index.s b/usr/src/lib/libc/vax/string/index.s
new file mode 100644 (file)
index 0000000..9ba2471
--- /dev/null
@@ -0,0 +1,41 @@
+/*     index.s 4.1     84/11/01        */
+
+/*
+ * Find the first occurence of c in the string cp.
+ * Return pointer to match or null pointer.
+ *
+ * char *
+ * index(cp, c)
+ *     char *cp, c;
+ */
+       .globl  _index
+
+_index:
+       .word   0x0
+       movq    4(ap),r1        # r1 = cp; r2 = c
+       tstl    r2              # check for special case c == '\0'
+       bneq    2f
+1:
+       locc    $0,$65535,(r1)  # just find end of string
+       beql    1b              # still looking
+       movl    r1,r0           # found it
+       ret
+2:
+       movab   tbl[r2],r5      # table entry for c
+       incb    (r5)
+       movzwl  $65535,r4       # fast access
+3:
+       scanc   r4,(r1),tbl,$1  # look for c or '\0'
+       beql    3b              # still looking
+       movl    r1,r0           # return pointer to char
+       tstb    (r0)            #    if have found '\0'
+       bneq    4f
+       clrl    r0              # else return 0
+4:
+       clrb    (r5)            # clean up table
+       ret
+
+       .data
+tbl:   .byte   1
+       .space  255
+       .text