windows-nt/Source/XPSP1/NT/base/ntdll/i386/emfinit.asm

47 lines
1.2 KiB
NASM
Raw Normal View History

2020-09-26 03:20:57 -05:00
subttl emfinit.asm - Emulator initialization and FINIT instruction
page
;*******************************************************************************
;emfinit.asm - Emulator initialization and FINIT instruction
;
; Microsoft Confidential
;
; Copyright (c) Microsoft Corporation 1991
; All Rights Reserved
;
;Revision History:
;
; [] 09/05/91 TP Initial 32-bit version.
;
;*******************************************************************************
EM_ENTRY eEmulatorInit
EmulatorInit:
EM_ENTRY eFINIT
eFINIT:
mov esi,BEGstk
mov EMSEG:[CURstk],INITstk
mov ecx,Numlev
xor eax,eax
EmInitLoop:
mov EMSEG:[esi].ExpSgn,bTAG_EMPTY ;Exponent and sign are zero
mov EMSEG:[esi].lManHi,eax
mov EMSEG:[esi].lManLo,eax
add esi, Reg87Len
loop EmInitLoop
mov EMSEG:[StatusWord],ax ; clear status word
mov [esp+4].OldStatus,ax ; clear saved status word.
mov EMSEG:[PrevCodeOff],eax
mov EMSEG:[PrevDataOff],eax
mov EMSEG:[LongControlWord],InitControlWord
mov eax,offset Round64near
mov EMSEG:[RoundMode],eax ;Address of round routine
mov EMSEG:[TransRound],eax ;Address of round routine
mov EMSEG:[SavedRoundMode],eax
mov EMSEG:[ZeroVector],offset SaveResult
mov EMSEG:[Einstall], 1
ret