windows-nt/Source/XPSP1/NT/sdktools/perftool/stat/i386/87ftol.asm

82 lines
1.3 KiB
NASM
Raw Normal View History

2020-09-26 03:20:57 -05:00
page ,132
title 87ftol - truncate TOS to 32-bit integer
;***
;87ftol.asm - truncate TOS to 32-bit integer
;
; Copyright (c) 1985-88, Microsoft Corporation
;
;Purpose:
;
;Revision History:
;
; 07/16/85 Greg Whitten
; save BX and CX for sloppy code generator
; 10/15/86 Greg Whitten
; in-line instructions rather than call _fpmath
; 08/24/87 Barry McCord
; expand the functionality of _ftol to handle
; unsigned long by using "fistp qword ptr"
; 11/24/87 Barry McCord
; added _loadds under ifdef DLL
;
; 08/26/88 Bill Johnston
; 386 version
;
;*******************************************************************************
.xlist
; include cruntime.inc
; include mrt386.inc
; include os2supp.inc
.list
; CODESEG
.386
.387
.model small,C
.code
public _fltused
_fltused equ 9876h
_ftol proc
local oldcw:word
local newcw:word
local intval:qword
fstcw [oldcw] ; get control word
fwait ; synchronize
mov ax, [oldcw] ; round mode saved
or ah, 0ch ; set chop rounding mode
mov [newcw], ax ; back to memory
fldcw [newcw] ; reset rounding
fistp qword ptr [intval] ; store chopped integer
fldcw [oldcw] ; restore rounding
; mov rax, IWORD ptr [intval]
; mov rdx, IWORD ptr [intval+ISIZE]
mov eax, dword ptr [intval]
mov edx, dword ptr [intval+4]
ret
_ftol endp
sqrt proc x:qword
fld [x]
fsqrt
ret
sqrt endp
end