- Finally, removing frame pointer was a bad idea (think of exceptions / etc).

svn path=/trunk/; revision=27202
This commit is contained in:
Aleksey Bragin 2007-06-16 12:28:56 +00:00
parent f1c06f9d0b
commit a49bd59734
4 changed files with 140 additions and 23 deletions

View file

@ -3,13 +3,47 @@
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
* PURPOSE: Run-Time Library * PURPOSE: Run-Time Library
* FILE: lib/rtl/i386/fabs.S * FILE: lib/rtl/i386/fabs.S
* PROGRAMER: Magnus Olsen (greatlord@greatlord.com) * PROGRAMER: Alex Ionescu (alex@relsoft.net)
*
* Copyright (C) 2002 Michael Ringgaard.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the project nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES// LOSS OF USE, DATA, OR PROFITS// OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/ */
.globl _fabs .globl _fabs
.intel_syntax noprefix
_fabs:
fld qword ptr [esp+8] .intel_syntax noprefix
fabs
/* FUNCTIONS ***************************************************************/
_fabs:
push ebp
mov ebp,esp
fld qword ptr [ebp+8] // Load real from stack
fabs // Take the absolute value
pop ebp
ret ret

View file

@ -3,14 +3,49 @@
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
* PURPOSE: Run-Time Library * PURPOSE: Run-Time Library
* FILE: lib/rtl/i386/log.S * FILE: lib/rtl/i386/log.S
* PROGRAMER: Magnus Olsen (greatlord@greatlord.com) * PROGRAMER: Alex Ionescu (alex@relsoft.net)
*
* Copyright (C) 2002 Michael Ringgaard.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the project nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES// LOSS OF USE, DATA, OR PROFITS// OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/ */
.globl _log .globl _log
.intel_syntax noprefix .intel_syntax noprefix
/* FUNCTIONS ***************************************************************/
_log: _log:
fld qword ptr [esp+8] push ebp
fldln2 mov ebp,esp
fxch st(1) fld qword ptr [ebp+8] // Load real from stack
fyl2x fldln2 // Load log base e of 2
fxch st(1) // Exchange st, st(1)
fyl2x // Compute the natural log(x)
pop ebp
ret ret

View file

@ -3,15 +3,47 @@
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
* PURPOSE: Run-Time Library * PURPOSE: Run-Time Library
* FILE: lib/rtl/i386/sqrt.S * FILE: lib/rtl/i386/sqrt.S
* PROGRAMER: Magnus Olsen (greatlord@greatlord.com) * PROGRAMER: Alex Ionescu (alex@relsoft.net)
*/ *
* Copyright (C) 2002 Michael Ringgaard.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the project nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES// LOSS OF USE, DATA, OR PROFITS// OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
.globl _sqrt .globl _sqrt
.intel_syntax noprefix .intel_syntax noprefix
/* FUNCTIONS ***************************************************************/
_sqrt: _sqrt:
fld qword ptr [esp+8] push ebp
fsqrt mov ebp,esp
fld qword ptr [ebp+8] // Load real from stack
fsqrt // Take the square root
pop ebp
ret ret

View file

@ -4,33 +4,49 @@
* PURPOSE: Run-Time Library * PURPOSE: Run-Time Library
* FILE: lib/rtl/i386/trig_asm.s * FILE: lib/rtl/i386/trig_asm.s
* PROGRAMER: Aleksey Bragin (aleksey reactos org) * PROGRAMER: Aleksey Bragin (aleksey reactos org)
*
*/ */
.globl _atan .globl _atan
.globl _cos .globl _cos
.globl _sin .globl _sin
.globl _tan
.intel_syntax noprefix .intel_syntax noprefix
/* FUNCTIONS ***************************************************************/
_atan: _atan:
fld qword ptr [esp+8] push ebp
mov ebp,esp
fld qword ptr [ebp+8]
fld1 fld1
fpatan fpatan
pop ebp
ret ret
_cos: _cos:
fld qword ptr [esp+8] push ebp
mov ebp,esp
fld qword ptr [ebp+8]
fcos fcos
pop ebp
ret ret
_sin: _sin:
fld qword ptr [esp+8] push ebp
mov ebp,esp
fld qword ptr [ebp+8]
fsin fsin
pop ebp
ret ret
_tan: _tan:
fld qword ptr [esp+8] push ebp
mov ebp,esp
sub esp,4
fld qword ptr [ebp+8]
fptan fptan
fstp dword ptr [esp-4] fstp dword ptr [ebp-4]
mov esp,ebp
pop ebp
ret ret