home *** CD-ROM | disk | FTP | other *** search
- /* This is file EXP.S */
- /*
- ** Copyright (C) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
- **
- ** Modified O.ROBERT 24, Avenue de Verdun 92170 VANVES, FRANCE
- **
- ** E-mail: roberto@germinal.ibp.fr
- **
- ** This file is distributed under the terms listed in the document
- ** "copying.dj", available from DJ Delorie at the address above.
- ** A copy of "copying.dj" should accompany this file; if not, a copy
- ** should be available from where this file was obtained. This file
- ** may not be distributed without a verbatim copy of "copying.dj".
- **
- ** This file is distributed WITHOUT ANY WARRANTY; without even the implied
- ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **
- ** or 03-Apr-1991 corrected bug about argument zero to pow
- ** fyl2x didn't like it
- */
-
- /* History:15,24 */
- .data
- LCW1:
- .word 0
- LCW2:
- .word 0
-
- .text
-
- LC0:
- .double 0d1.0e+00
-
- .globl _pow2
- _pow2:
- fldl 4(%esp)
- Lpow2:
- fstcww LCW1
- fstcww LCW2
- fwait
- andl $0xf3ff,LCW2
- orl $0x0400,LCW2
- fldcww LCW2
- fldl %st(0)
- frndint
- fldcww LCW1
- fxch %st(1)
- fsub %st(1),%st
- f2xm1
- faddl LC0
- fscale
- fstp %st(1)
- ret
-
- .globl _exp
- _exp:
- fldl 4(%esp)
- fldl2e
- fmulp
- jmp Lpow2
-
- .globl _pow10
- _pow10:
- fldl 4(%esp)
- fldl2t
- fmulp
- jmp Lpow2
-
- .globl _pow
- _pow:
- fldl 4(%esp)
- ftst
- fnstsww %ax
- sahf
- je zero1
- fldl 12(%esp)
- ftst
- fnstsww %ax
- sahf
- je zero2
- fxch %st(1)
- fyl2x
- jmp Lpow2
- zero1:
- fstpl 4(%esp)
- fldzl
- ret
- zero2:
- fstpl 4(%esp)
- fstpl 4(%esp)
- fld1l
- ret
-