|
|
1.1 root 1: //////////
2: / libc/crt/i386/fops.s
3: / i386 C runtime library.
4: / IEEE software floating point support.
5: //////////
6:
7: //////////
8: / double _fadd(float f)
9: / Return f + %edx:eax in %edx:%eax.
10: /
11: / double _fdiv(float f)
12: / Return f / %edx:eax in %edx:%eax.
13: /
14: / double _fmul(float f)
15: / Return f * %edx:eax in %edx:%eax.
16: /
17: / double _fsub(float f)
18: / Return f - %edx:eax in %edx:%eax.
19: //////////
20:
21: .globl _fadd
22: .globl _fdiv
23: .globl _fmul
24: .globl _fsub
25: .globl _dadd
26: .globl _drdiv
27: .globl _dmul
28: .globl _drsub
29: .globl _dsub
30: .globl _dfcvt
31:
32: _fadd: / Stack: f ra
33: push %ecx / f ra ECX
34: mov %ecx, $_dadd / function to execute fn to ECX
35: jmp .L0
36:
37: _fdiv:
38: push %ecx
39: mov %ecx, $_drdiv
40: jmp .L0
41:
42: _fmul:
43: push %ecx
44: mov %ecx, $_dmul
45: jmp .L0
46:
47: _fsub:
48: push %ecx
49: mov %ecx, $_drsub
50:
51: .L0: / Stack: f ra ECX; fn in ECX
52: push %edx / f ra ECX hi(d)
53: push %eax / f ra ECX hi(d) lo(d)
54: movl %eax, 16(%esp) / f to EAX
55: call _dfcvt / (double)f to EDX:EAX
56: icall %ecx / execute fn(d), result to EDX:EAX
57: addl %esp, $8 / f ra ECX
58: pop %ecx / restore ECX
59: ret / and return
60:
61: / end of libc/crt/i386/fops.s
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.