source: trunk/minix/lib/ack/float/add_ext.s@ 10

Last change on this file since 10 was 9, checked in by Mattia Monga, 14 years ago

Minix 3.1.2a

File size: 1.3 KB
Line 
1.sect .text; .sect .rom; .sect .data; .sect .bss
2.extern .add_ext
3.sect .text
4.add_ext:
5push ebp
6mov ebp,esp
7sub esp,12
8push esi
9push edi
10mov esi,8(ebp)
11mov edi,12(ebp)
12mov edx,8(edi)
13or edx,4(edi)
14je I1_1
15mov edx,8(esi)
16or edx,4(esi)
17jne I1_7
18push edi
19push esi
20mov ecx,3
21call .blm
22jmp I1_1
23I1_7:
24push edi
25push esi
26call .sft_ext
27pop ecx
28pop ecx
29movsx eax,(esi)
30movsx ebx,(edi)
31cmp eax,ebx
32je I1_10
33mov edx,4(esi)
34cmp 4(edi),edx
35ja I1_12
36cmp 4(edi),edx
37jne I1_13
38mov edx,8(esi)
39cmp 8(edi),edx
40jbe I1_13
41I1_12:
42push esi
43lea eax,-12(ebp)
44push eax
45mov ecx,3
46call .blm
47push edi
48push esi
49mov ecx,3
50call .blm
51mov edx,-4(ebp)
52cmp 8(esi),edx
53jae I1_18
54mov edx,4(esi)
55sub edx,1
56mov 4(esi),edx
57I1_18:
58mov edx,4(esi)
59sub edx,-8(ebp)
60mov 4(esi),edx
61mov edx,8(esi)
62sub edx,-4(ebp)
63mov 8(esi),edx
64jmp I1_11
65I1_13:
66mov edx,8(esi)
67cmp 8(edi),edx
68jbe I1_21
69mov edx,4(esi)
70sub edx,1
71mov 4(esi),edx
72I1_21:
73mov edx,4(esi)
74sub edx,4(edi)
75mov 4(esi),edx
76mov edx,8(esi)
77sub edx,8(edi)
78mov 8(esi),edx
79jmp I1_11
80I1_10:
81lea eax,4(edi)
82push eax
83lea eax,4(esi)
84push eax
85call .b64_add
86pop ecx
87pop ecx
88test eax,eax
89je I1_11
90lea eax,4(esi)
91push eax
92call .b64_rsft
93pop ecx
94or 4(esi),-2147483648
95movsx eax,2(esi)
96inc eax
97movsx eax,eax
98o16 mov 2(esi),eax
99I1_11:
100push esi
101call .nrm_ext
102pop ecx
103I1_1:
104pop edi
105pop esi
106leave
107ret
Note: See TracBrowser for help on using the repository browser.