INFO: Jak systém Windows zpracovává výpočty s plovoucí desetinnou čárkou

Překlady článku Překlady článku
ID článku: 102555 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Všechny platformy Microsoft Windows poskytují aplikacím Win32 společné prostředí s plovoucí desetinnou čárkou, ale liší se v jejich podporu ovladačů zařízení a jejich podpora aplikací Win16, operační systém rozhraní POSIX (Portable), MS-DOS a systémem OS/2.

Tento článek popisuje, jak každý z těchto platforem nabízí podpora plovoucí desetinné čárky, aplikací a ovladačů zařízení.

Další informace

V této části nejprve popisuje funkce s plovoucí desetinnou čárkou v systému Windows NT, Windows 2000 a jeho následníků a potom stejně v systému Windows 95, Windows 98, Windows 98 Second Edition a systémy založené na systému Windows Millennium Edition (ME). Členové každé skupiny poskytují podobné podpora plovoucí desetinné čárky k sobě navzájem, ale dvě skupiny se od sebe liší z důvodu zásadních rozdílů.

Windows NT a jeho následníci

Aplikace Win32

Každé vlákno aplikace Win32 má vlastní provedení uvedeno, že obsahuje univerzální registry a registry s plovoucí desetinnou čárkou. Proto plovoucí provedení a zpracování výjimek jsou řízeny na základě vlákna. To umožňuje jednotlivé podprocesy v procesu upravit chování procesoru s plovoucí desetinnou čárkou použít speciální zaokrouhlení nebo přesné ovládání a zpracování výjimek.

Výjimky s plovoucí desetinnou čárkou jsou zpracovávány pomocí Win32 strukturované výjimky (SEH) mechanismus zpracování součástí jádra Win32. Když způsobí, že podproces s plovoucí desetinnou čárkou výjimku, mechanismus SEH hledá výjimku Obslužná rutina zaregistrovány podprocesem pro zpracování výjimky. Pokud je vlákno se nepodařilo zpracovat výjimku, proces, který vlastní, že je zavřený.

Windows NT a jeho následníci podporují plné s plovoucí desetinnou čárkou pro Win32 aplikace, dokonce i na Intel X86 procesorů, které nemají vestavěnou podporu s plovoucí desetinnou čárkou. Emulace pochází od jádra Win32 pro počítače, které nemají v pohyblivé čárce. Proto kompilátory není nutné poskytnout vlastní emulace pohyblivé čárky.

Jazyky mohou mít knihovny runtime nebo runtime systémy, které poskytují obslužné rutiny výchozí výjimky s plovoucí desetinnou čárkou. Například aplikace Microsoft Visual Běhové knihovny jazyka c poskytuje výchozí zpracování výjimek s plovoucí desetinnou čárkou a zahrnuje funkce, jako je _controlfp pro stanovení a úpravu hardwaru s plovoucí desetinnou čárkou zaokrouhlení, přesné ovládání a zpracováním chování výjimek.

Win16 aplikací

Aplikace Win16 se obvykle sestavují mít opravu záznamů v jejich kód objektu obsahující pokyny s plovoucí desetinnou čárkou a volání 16-bit s plovoucí desetinnou čárkou emulátor, WIN87EM. Pokud procesor počítače podporuje s pohyblivou čárkou pokyny nebo je k dispozici koprocesor, zavaděč řeší oprav s pohyblivou čárkou pokyny a pokyny budou provedeny. Pokud není zjištěna v pohyblivé čárce, zavaděč řeší oprav k volání WIN87EM a bude spuštěn emulátor.

WIN87EM není zachytit s plovoucí desetinnou čárkou pokyny, které vykonávají; Spustí se pouze v případě, že je výslovně volána. Proto se ujistěte, že jsou kompilovány Win16 aplikací pro podporu emulace, který vám oznámí propojovací program pro opravu záznamů ve spustitelném souboru.

Pomocí systému Windows NT v počítačích s procesorem RISC Intel Windows NT Xemulátor kódu 86 procesoru ke spuštění aplikací Win16. Windows NT 3.5 a 3.51 WINDOWSNT patří 80286 a 80287 emulátorů; Systém Windows NT 4.0 obsahuje i486 emulátoru. Win16 aplikace jsou vždy spuštěny jakoby s plovoucí desetinnou čárkou coprocessors Intel jsou k dispozici. WIN87EM proto neposkytuje emulace pohyblivé čárky v počítačích RISC.

Ovladače zařízení

Ovladače režimu jádra systému Windows 2000 a jeho následníků lze použít s pohyblivou čárkou pokyny při IRQL je menší nebo rovna úrovni DISPATCH_LEVEL, ale musíte explicitně zachovat stav s plovoucí desetinnou čárkou procesoru, aby s plovoucí desetinnou čárkou kontextu volajícího nezmění. Ovladač funkce před provedením jakékoli operace s plovoucí desetinnou čárkou musí volat KeSaveFloatingPointState a KeRestoreFloatingPointState musí volat před návratem k volajícímu. Tyto funkce jsou popsány v Windows 2000 Driver Development Kit (DDK).

Ovladače režimu jádra systému Windows NT 3.51 a 4.0 v systému Windows nelze použít s pohyblivou čárkou pokyny, protože přepínače zásobníku režimu jádra, které nezachovávají registry s plovoucí desetinnou čárkou. Pokud režimu jádra ovladač, nebude používat všechny instrukce s plovoucí desetinnou čárkou, může dojít buď poškození číselného stavu aplikace uživatelského režimu nebo selhání systému (selhání).

Aplikace systému MS-DOS

Windows NT a jeho nástupce na platformě Intel X86 spuštění aplikace systému MS-DOS z řady Intel X86 procesoru virtuální 8086 režim. Aplikace systému MS-DOS lze přístup k hardwaru s plovoucí desetinnou čárkou, stejně jako v systému MS-DOS. Pokud je k dispozici žádný hardware s plovoucí desetinnou čárkou, bez emulace je k dispozici pro aplikaci. Proto aplikace musí poskytnout vlastní emulace.

Systém Windows NT v počítačích s procesorem RISC využívá integrovaný Intel X86 emulace kódu. Windows NT 3.5 a 3.51 WINDOWSNT patří 80286 a 80287 emulátorů; Systém Windows NT 4.0 obsahuje emulátor i486. Aplikace systému MS-DOS jsou vždy spuštěny jakoby s plovoucí desetinnou čárkou coprocessors Intel jsou k dispozici.

Aplikace standardu POSIX

S aplikací Win32 aplikací POSIX může převzít podporující plné s plovoucí desetinnou čárkou vždy existuje.

Standardu POSIX nedefinuje způsob, jak zapnout s plovoucí desetinnou čárkou výjimky. Proto musí aplikace standardu POSIX, které používají výjimky s plovoucí desetinnou čárkou spoléhat na funkce specifické pro systém. Aplikace standardu POSIX kompilována s Microsoft Visual C++ můžete zapnout plovoucí výjimky pomocí funkce _controlfp . Výjimky s plovoucí desetinnou čárkou může pak být zachycena SIGFPE nebo pokud aplikace potřebuje více než jen zachytit výjimky, pomocí funkce fpieee_flt .

OS/2 aplikací

Odpovídá podpora plovoucí desetinné čárky v tomto podsystému OS/2: Pokud plovoucí- není nainstalován hardware bod, OS/2 aplikací musí poskytnout vlastní emulace. Podsystém OS/2 je podporován pouze na Intel X86 verze Windows NT a jeho následníci.

Windows 95, Windows 98, Windows 98 Druhé vydání a Windows Me

Aplikace Win32

Windows 95 prostřednictvím platformy Windows Me obsahují stejné podpora plovoucí desetinné čárky aplikace Win32 jako platformy Windows NT a Windows 2000.

Win16 aplikací

Aplikace Win16 se obvykle sestavují zahrnout opravu záznamů v jejich kód objektu obsahující pokyny s plovoucí desetinnou čárkou a volání 16-bit s plovoucí desetinnou čárkou emulátor, WIN87EM. Pokud procesor počítače podporuje s pohyblivou čárkou pokyny nebo je k dispozici koprocesor, zavaděč řeší oprav s pohyblivou čárkou pokyny a bude spuštěn. Pokud není zjištěna v pohyblivé čárce, zavaděč řeší oprav k volání WIN87EM a bude spuštěn emulátor.

WIN87EM není zachytit s plovoucí desetinnou čárkou pokyny, které vykonávají; Spustí se pouze v případě, že je výslovně volána. Proto kompilaci aplikací Win16 pro podporu emulace, který vám oznámí propojovací program pro opravu záznamů ve spustitelném souboru.

Ovladače zařízení

Ovladače virtuálního zařízení (VxD) lze použít s pohyblivou čárkou pokyny, ale musíte použít rozhraní virtuální matematického koprocesoru zařízení k uložení a obnovení stavu koprocesor s plovoucí desetinnou čárkou. Ovladače VxD musí také zaregistrovat obslužnou rutinu výjimky pro výjimky s plovoucí desetinnou čárkou.

Aplikace systému MS-DOS

Windows 95 prostřednictvím platformy Windows Me spuštění aplikace systému MS-DOS z řady Intel X86 procesoru virtuální 8086 režim. Aplikace systému MS-DOS lze přístup k hardwaru s plovoucí desetinnou čárkou, stejně jako v systému MS-DOS. Pokud je k dispozici žádný hardware s plovoucí desetinnou čárkou, bez emulace je k dispozici pro aplikaci. Aplikace proto musí poskytnout vlastní emulace, jako obvykle provádí knihovna runtime aplikace systému MS-DOS.

Produkty třetích stran popisované v tomto článku jsou vyráběny společnostmi nezávislými na společnosti Microsoft. Společnost Microsoft neposkytuje žádnou záruku, implicitně předpokládanou ani jinou, ohledně výkonu nebo spolehlivosti těchto produktů.

Vlastnosti

ID článku: 102555 - Poslední aktualizace: 28. února 2014 - Revize: 4.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Win32 Application Programming Interface na těchto platformách
    • Microsoft Windows 98 Standard Edition
    • Microsoft Windows Millennium Edition
Klíčová slova: 
kbnosurvey kbarchive kbfloatpoint kbinfo kbkernbase kbprogramming kbmt KB102555 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku: 102555

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com