Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
553 serge 1
;*****************************************************************************
2
;*
3
;*                            Open Watcom Project
4
;*
5
;*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
6
;*
7
;*  ========================================================================
8
;*
9
;*    This file contains Original Code and/or Modifications of Original
10
;*    Code as defined in and that are subject to the Sybase Open Watcom
11
;*    Public License version 1.0 (the 'License'). You may not use this file
12
;*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
13
;*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
14
;*    provided with the Original Code and Modifications, and is also
15
;*    available at www.sybase.com/developer/opensource.
16
;*
17
;*    The Original Code and all software distributed under the License are
18
;*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
19
;*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
20
;*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
21
;*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
22
;*    NON-INFRINGEMENT. Please see the License for the specific language
23
;*    governing rights and limitations under the License.
24
;*
25
;*  ========================================================================
26
;*
27
;* Description:  WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
28
;*               DESCRIBE IT HERE!
29
;*
30
;*****************************************************************************
31
 
32
 
33
include mdef.inc
34
include struct.inc
35
 
36
.8087
37
        modstart        _7u8f386
38
 
39
        xdefp   __U8FD7
40
        xdefp   __U8FS7
41
 
42
;;;;two_to_64       dw      0000h, 0000h, 0000h, 43f0h ; removed by JBS
43
 
44
ULLMXP1:
45
        DB  00H, 00H, 80H, 5FH          ; (float)(ULONGLONG_MAX +1)
46
                                        ; (only exponent set)
47
 
48
defpe   __U8FS7
49
        push    edx                     ; save unsigned int64 (hi)
50
        push    eax                     ; save unsigned int64 (lo)
51
        fild    qword ptr [esp]         ; load as int64
52
        test    byte ptr 07H[esp],80H   ; most significant bit set?
53
        jns     L$2                     ; no, jump
54
        fadd    dword ptr cs:ULLMXP1    ; correct int64 to unsigned int64 as
55
                                        ; as float (because expression is exact
56
                                        ; in powers of 2, so save 4 bytes)
57
L$2:
58
        pop     eax                     ; correct stack
59
        fstp    dword ptr [esp]         ; save float and pop coproc stack
60
        pop     eax                     ; return float in eax
61
        ret
62
endproc __U8FS7
63
 
64
defpe   __U8FD7
65
        push    edx                     ; save unsigned int64 (hi)
66
        push    eax                     ; save unsigned int64 (lo)
67
        fild    qword ptr [esp]         ; load as int64
68
        test    byte ptr 07H[esp],80H   ; most significant bit set?
69
        jns     L$3                     ; no, jump
70
        fadd    dword ptr cs:ULLMXP1    ; correct int64 to unsigned int64 as
71
                                        ; as float (because expression is exact
72
                                        ; in powers of 2, so save 4 bytes)
73
L$3:
74
        fstp    qword ptr [esp]         ; save double and pop coproc stack
75
        pop     eax                     ; return double (lo)
76
        pop     edx                     ; return double (hi)
77
        ret
78
endproc __U8FD7
79
 
80
        endmod
81
        end