windows-nt/Source/XPSP1/NT/base/crts/fpw32/tran/i386/ftol.asm

59 lines
1.1 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-2001, Microsoft Corporation. All rights reserved.
;
;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
.list
CODESEG
public _ftol
_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 eax, dword ptr [intval]
mov edx, dword ptr [intval+4]
ret
_ftol endp
end