Rich Felker
13 years ago
|
@@ -1,15 +1,28 @@
|
|
|
.global modf
|
|
|
.type modf,@function
|
|
|
modf:
|
|
|
- mov 12(%esp),%eax
|
|
|
+ mov 12(%esp),%ecx
|
|
|
fldl 4(%esp)
|
|
|
- fld1
|
|
|
- fld %st(1)
|
|
|
-1: fprem
|
|
|
- fstsw %ax
|
|
|
+ fxam
|
|
|
+ fnstsw %ax
|
|
|
sahf
|
|
|
- jp 1b
|
|
|
- fstp %st(1)
|
|
|
- fsubr %st(1)
|
|
|
- fstpl (%eax)
|
|
|
+ jnp 1f
|
|
|
+ jc 2f
|
|
|
+1: fld1
|
|
|
+ fld %st(1)
|
|
|
+1: fprem
|
|
|
+ fnstsw %ax
|
|
|
+ sahf
|
|
|
+ jp 1b
|
|
|
+ fstp %st(1)
|
|
|
+ fsubr %st(0),%st(1)
|
|
|
+ fxch %st(1)
|
|
|
+ fstpl (%ecx)
|
|
|
+ ret
|
|
|
+
|
|
|
+2: fstpl (%ecx)
|
|
|
+ mov 4(%ecx),%eax
|
|
|
+ and $0x80000000,%eax
|
|
|
+ mov %eax,4(%esp)
|
|
|
+ flds 4(%esp)
|
|
|
ret
|
|
@@ -1,15 +1,28 @@
|
|
|
.global modff
|
|
|
.type modff,@function
|
|
|
modff:
|
|
|
- mov 8(%esp),%eax
|
|
|
+ mov 8(%esp),%ecx
|
|
|
flds 4(%esp)
|
|
|
- fld1
|
|
|
- fld %st(1)
|
|
|
-1: fprem
|
|
|
- fstsw %ax
|
|
|
+ fxam
|
|
|
+ fnstsw %ax
|
|
|
sahf
|
|
|
- jp 1b
|
|
|
- fstp %st(1)
|
|
|
- fsubr %st(1)
|
|
|
- fstps (%eax)
|
|
|
+ jnp 1f
|
|
|
+ jc 2f
|
|
|
+1: fld1
|
|
|
+ fld %st(1)
|
|
|
+1: fprem
|
|
|
+ fnstsw %ax
|
|
|
+ sahf
|
|
|
+ jp 1b
|
|
|
+ fstp %st(1)
|
|
|
+ fsubr %st(0),%st(1)
|
|
|
+ fxch %st(1)
|
|
|
+ fstps (%ecx)
|
|
|
+ ret
|
|
|
+
|
|
|
+2: fstps (%ecx)
|
|
|
+ mov (%ecx),%eax
|
|
|
+ and $0x80000000,%eax
|
|
|
+ mov %eax,4(%esp)
|
|
|
+ flds 4(%esp)
|
|
|
ret
|
|
@@ -1,15 +1,28 @@
|
|
|
.global modfl
|
|
|
.type modfl,@function
|
|
|
modfl:
|
|
|
- mov 16(%esp),%eax
|
|
|
+ mov 16(%esp),%ecx
|
|
|
fldt 4(%esp)
|
|
|
- fld1
|
|
|
- fld %st(1)
|
|
|
-1: fprem
|
|
|
- fstsw %ax
|
|
|
+ fxam
|
|
|
+ fnstsw %ax
|
|
|
sahf
|
|
|
- jp 1b
|
|
|
- fstp %st(1)
|
|
|
- fsubr %st(1)
|
|
|
- fstpt (%eax)
|
|
|
+ jnp 1f
|
|
|
+ jc 2f
|
|
|
+1: fld1
|
|
|
+ fld %st(1)
|
|
|
+1: fprem
|
|
|
+ fnstsw %ax
|
|
|
+ sahf
|
|
|
+ jp 1b
|
|
|
+ fstp %st(1)
|
|
|
+ fsubr %st(0),%st(1)
|
|
|
+ fxch %st(1)
|
|
|
+ fstpt (%ecx)
|
|
|
+ ret
|
|
|
+
|
|
|
+2: fstpt (%ecx)
|
|
|
+ mov 6(%ecx),%eax
|
|
|
+ and $0x80000000,%eax
|
|
|
+ mov %eax,4(%esp)
|
|
|
+ flds 4(%esp)
|
|
|
ret
|