|
|
1.1 root 1: # optimized (and corrected) from output of C compiler
2: # -16(fp) --> r0
3: # -20(fp) --> r8
4: # -8(fp) --> r6
5: # -21(fp) --> r5
6: # -22(fp) --> r4
7: .set one,010 # 1.0 in floating immediate format
8: .set ten,042 # 10.0 in floating immediate format
9: big: .word 0x5c80,0,0,0 # 2**56 in double floating
10: huge: .word 0x8000,0,0,0 # reserved operand
11: L49: .double 0d1.00000000000000000000e+21
12: .set .R1,0xff0
13: .set .F1,24
14: .globl _atof
15: _atof:
16: .word .R1
17: movl 4(ap),r11
18: L15:
19: cvtbl (r11)+,r10
20: cmpl r10,$32
21: jeql L15
22: clrb r5
23: cmpb r10,$45
24: jneq L17
25: incb r5
26: jbr L18
27: L17:
28: cmpb r10,$43
29: jeql L18
30: decl r11
31: L18:
32: clrd r0
33: clrl r9
34: jbr L22
35: L20001:
36: muld2 $ten,r0
37: subl3 $48,r10,r6
38: cvtld r6,r6
39: addd2 r6,r0
40: jbr L22
41: L20003:
42: cmpb r10,$48
43: jlss L23
44: cmpd r0,big
45: jlss L20001
46: incl r9
47: L22:
48: cvtbl (r11)+,r10
49: cmpl r10,$57
50: jleq L20003
51: L23:
52: cmpb r10,$46
53: jeql L28
54: jbr L27
55: L20005:
56: cmpb r10,$48
57: jlss L27
58: cmpd r0,big
59: jgeq L28
60: decl r9
61: muld2 $ten,r0
62: subl3 $48,r10,r6
63: cvtld r6,r6
64: addd2 r6,r0
65: L28:
66: cvtbl (r11)+,r10
67: cmpl r10,$57
68: jleq L20005
69: L27:
70: tstb r5
71: jeql L8827
72: mnegd r0,r0
73: L8827:
74: clrl r8
75: cmpb r10,$69
76: jeql L10000
77: cmpb r10,$101
78: jneq L32
79: L10000:
80: clrb r4
81: cvtbl (r11)+,r10
82: cmpl r10,$45
83: jneq L33
84: incb r4
85: jbr L37
86: L33:
87: cmpb r10,$43
88: jeql L37
89: decl r11
90: jbr L37
91: L20007:
92: cmpb r10,$48
93: jlss L38
94: moval (r8)[r8],r8
95: movaw -48(r10)[r8],r8
96: L37:
97: cvtbl (r11)+,r10
98: cmpl r10,$57
99: jleq L20007
100: L38:
101: tstb r4
102: jeql L32
103: mnegl r8,r8
104: L32:
105: addl2 r8,r9
106: jneq L40
107: ret
108: L40:
109: clrb r4
110: tstl r9
111: jgeq L41
112: incb r4
113: mnegl r9,r9
114: L41:
115: cmpl r9,$38
116: jleq L42
117: tstb r4
118: jeql L43
119: clrd r0
120: ret
121: L43:
122: tstb r5
123: jeql L8843
124: mnegd huge,r0
125: ret
126: L8843:
127: movd huge,r0
128: ret
129: L42:
130: movd $one,r6
131: jbr L46
132: L20009:
133: divd2 r6,r0
134: ret
135: L48:
136: muld2 $ten,r6
137: decl r9
138: L46:
139: tstl r9
140: jeql L47
141: cmpl r9,$21
142: jneq L48
143: muld2 L49,r6
144: L47:
145: tstb r4
146: jneq L20009
147: muld2 r6,r0
148: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.