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