1: /*
   2:  * Copyright (c) 1983 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  */
   6: 
   7: #ifdef LIBC_SCCS
   8:         .asciz  "@(#)strncmp.s	5.3 (Berkeley) 3/9/86"
   9: #endif LIBC_SCCS
  10: 
  11: /*
  12:  * Compare at most n characters of string
  13:  * s1 lexicographically to string s2.
  14:  * Return:
  15:  *	0	s1 == s2
  16:  *	> 0	s1 > s2
  17:  *	< 0	s2 < s2
  18:  *
  19:  * strncmp(s1, s2, n)
  20:  *	char *s1, *s2;
  21:  *	int n;
  22:  */
  23: #include "DEFS.h"
  24: 
  25: ENTRY(strncmp, 0)
  26:         movl    4(ap),r1        # r1 = s1
  27:         movq    8(ap),r3        # r3 = s2; r4 = n
  28: 1:
  29:         clrl    r5              # calculate min bytes to next page boundry
  30:         subb3   r1,$255,r5      # r5 = (bytes - 1) to end of page for s1
  31:         subb3   r3,$255,r0      # r0 = (bytes - 1) to end of page for s2
  32:         cmpb    r0,r5           # r5 = min(r0, r5);
  33:         bgtru   2f
  34:         movb    r0,r5
  35: 2:
  36:         incl    r5              # r5 = min bytes to next page boundry
  37:         cmpl    r4,r5           # r5 = min(n, r5);
  38:         bgeq    3f
  39:         movl    r4,r5
  40: 3:
  41:         cmpc3   r5,(r1),(r3)    # compare strings
  42:         bneq    4f
  43:         subl2   r5,r4           # check for end of comparison
  44:         beql    5f
  45:         subl2   r5,r1           # check if found null yet
  46:         locc    $0,r5,(r1)
  47:         beql    1b              # not yet done, continue checking
  48:         subl2   r0,r3
  49:         mnegb   (r3),r0         # r0 = '\0' - *s2
  50:         cvtbl   r0,r0
  51:         ret
  52: 4:
  53:         subl2   r0,r5           # check for null in matching string
  54:         subl2   r5,r1
  55:         locc    $0,r5,(r1)
  56:         bneq    5f
  57:         subb3   (r3),(r1),r0    # r0 = *s1 - *s2
  58:         cvtbl   r0,r0
  59:         ret
  60: 5:
  61:         clrl    r0              # both the same to null
  62:         ret

Defined functions

_strncmp defined in line 25; never used
Last modified: 1986-03-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 617
Valid CSS Valid XHTML 1.0 Strict