|
|
1.1 ! root 1: # "@(#)s_cmp_s.s 5.1 (Berkeley) 11/3/86" ! 2: ! 3: .data ! 4: .text ! 5: LL0:.align 1 ! 6: .globl _s_cmp ! 7: .set MASK__,0x1004 ! 8: .data ! 9: .text ! 10: _s_cmp:.word MASK__ ! 11: movl 4(fp),r0 /* a */ ! 12: movl 8(fp),r1 /* b */ ! 13: movl 12(fp),r12 /* la */ ! 14: cmpl r12,16(fp) /* if (la <= lb) */ ! 15: jgtr L17 ! 16: movl r12, r2 /* compare according to la */ ! 17: cmps3 ! 18: jeql L2 /* if not equal */ ! 19: ! 20: L20: ! 21: cvtbl (r0), r0 /* return(*a - *b) */ ! 22: cvtbl (r1), r1 ! 23: subl2 r1,r0 ! 24: ret ! 25: ! 26: L2: ! 27: cmpl r12,16(fp) /* if (la == lb) */ ! 28: jneq L50 ! 29: clrl r0 /* then strings are equal */ ! 30: ret ! 31: ! 32: L50: ! 33: addl3 8(fp), 16(fp), r12 /* r12 = bend */ ! 34: ! 35: L3: ! 36: cmpb (r1), $32 /* if *b != space */ ! 37: jeql L4 ! 38: cvtbl (r1), r1 ! 39: movl $32, r0 /* return(' ' - *b) */ ! 40: subl2 r1, r0 ! 41: ret ! 42: ! 43: L4: /* else loop */ ! 44: incl r1 ! 45: cmpl r1, r12 ! 46: jlssu L3 /* till bend */ ! 47: clrl r0 ! 48: ret /* strings equal: return(0) */ ! 49: ! 50: ! 51: L17: /* else */ ! 52: movl 16(fp), r2 /* compare according to lb */ ! 53: cmps3 ! 54: jneq L20 /* if not equal */ ! 55: /* return(*a - *b) */ ! 56: addl3 4(fp), 12(fp), r12 /* r12 = aend */ ! 57: ! 58: L30: ! 59: cmpb (r0), $32 /* if *a != space */ ! 60: jeql L40 ! 61: cvtbl (r0), r0 ! 62: movl $32, r1 /* return(*a - ' ') */ ! 63: subl2 r1, r0 ! 64: ret ! 65: ! 66: L40: /* else loop */ ! 67: incl r0 ! 68: cmpl r0, r12 ! 69: jlssu L30 /* till bend */ ! 70: clrl r0 ! 71: ret /* strings equal: return(0) */ ! 72:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.