|
|
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.