INFO: Hoe wordt omgegaan berekeningen met drijvende komma

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 102555 - Bekijk de producten waarop dit artikel van toepassing is.
Dit artikel is gearchiveerd. Het wordt aangeboden in de huidige vorm en wordt niet meer bijgewerkt.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

Alle Windows-platforms Win32-toepassingen bieden een gemeenschappelijke drijvende omgeving, maar ze verschillen in hun ondersteuning voor stuurprogramma's en ondersteuning voor Win16, Portable Operating System Interface (POSIX), MS-DOS of OS/2-gebaseerde toepassingen.

In dit artikel wordt beschreven hoe deze platforms biedt drijvende ondersteuning voor toepassingen en apparaatstuurprogramma's.

Meer informatie

Deze sectie wordt eerst beschreven drijvende functionaliteit in Windows NT, Windows 2000 en de opvolgende taken en beschrijving op in Windows 95, Windows 98, Windows 98 Tweede editie en Windows Millennium Edition (ME)-systemen. Leden van elke groep bieden vergelijkbare floating-point support met elkaar, maar de twee groepen van elkaar verschillen vanwege de onderliggende verschillen in architectuur.

Windows NT en de opvolgende taken

Win32-toepassingen

Elke thread in een Win32-toepassing heeft een eigen status die uitvoering bevat de algemene registers en de drijvende registers. Drijvende uitvoering en afhandeling van uitzonderingen worden daarom bepaald op basis van de per thread. Hierdoor kunnen afzonderlijke threads in een proces aanpassen van het gedrag van de processor drijvende gespecialiseerde afronding of nauwkeurigheid en afhandeling van uitzonderingen.

Drijvende uitzonderingen worden afgehandeld door Win32 structured exception Afhandeling (SEH) mechanisme ingebouwd in de Win32-kernel. Wanneer een thread veroorzaakt een drijvende komma-uitzondering SEH mechanisme zoekt een uitzondering de handler is geregistreerd door de thread de uitzondering verwerken. Als de thread de uitzondering, het proces dat eigenaar is van gesloten is verwerkt niet.

Windows NT en opvolgende bieden volledige drijvende ondersteuning voor Win32-toepassingen, zelfs op Intel x86-processors die geen ingebouwde ondersteuning voor drijvende komma. De Win32-kernel voor computers die geen drijvende-kommahardware emulatie van. Compilers hoeft dus niet hun eigen drijvende-kommaemulatie bieden.

Talen mogelijk runtimebibliotheken of runtime-systemen bieden drijvende uitzonderingshandlers standaard. Bijvoorbeeld Microsoft Visual C++ runtime library bevat standaard drijvende exception handling en bevat functies zoals _controlfp voor het bepalen en aanpassen van de drijvende-kommahardware afronding, nauwkeurigheid en gedrag van de verwerking van uitzonderingen.

Win16-toepassingen

Win16-toepassingen zijn gewoonlijk gecompileerd om correctie records hebben in hun objectcode met drijvende instructies en oproepen de 16-bits floating-point emulator, WIN87EM. Als de computer processor drijvende instructies ondersteunt of als een coprocessor aanwezig is, de lader van de correcties wordt opgelost drijvende instructies en de instructies worden uitgevoerd. Als drijvende-kommahardware niet wordt gedetecteerd, de lader herleidt de correcties op het aanroepen van WIN87EM en de emulator wordt uitgevoerd.

WIN87EM is niet onderschept drijvende instructies die toepassingen uitvoeren; wordt uitgevoerd alleen als expliciet wordt genoemd. Zorg ervoor dat Win16-toepassingen ondersteunen emulatie die vertelt de linker correctie records plaatsen in het uitvoerbare bestand worden gecompileerd.

Intel Windows NT gebruikt u Windows NT op RISC-computers x86-processor emulator code Win16-toepassingen uit te voeren. Windows NT 3.5 of Windows NT 3.51, inclusief emulators 80286 en 80287; Windows NT 4.0 bevat een i486-emulator. Win16-toepassingen worden altijd uitgevoerd als de Intel drijvende-coprocessors aanwezig zijn. Daarom WIN87EM geen drijvende-kommaemulatie op RISC-computers.

Apparaatstuurprogramma 's

Kernel-modus stuurprogramma's voor Windows 2000 en de opvolgende taken kunt drijvende instructies IRQL is kleiner dan of gelijk aan DISPATCH_LEVEL, maar moet de processor drijvende staat expliciet behouden zodat drijvende context van de aanroeper niet is gewijzigd. Functies van het stuurprogramma moeten KeSaveFloatingPointState aanroepen voordat er bewerkingen met drijvende komma en moeten KeRestoreFloatingPointState aanroepen voordat u terugkeert naar de aanroeper. Deze functies worden beschreven in de Windows 2000 Driver Development Kit (DDK).

Windows NT 3.51 en 4.0 Windows kernel-modus stuurprogramma's niet drijvende instructies gebruiken omdat kernelmodus stack switches de drijvende registers niet behouden. Als een kernel-modus stuurprogramma heeft een drijvende komma-instructie, kan hierdoor een beschadiging van de numerieke staat de user-mode-toepassing of een systeemfout (vastlopen).

MS-DOS-toepassingen

Windows NT en opvolgende Intel x86 uitvoeren MS-DOS-toepassingen in de Intel x86 processor virtuele 8086-modus. MS-DOS-toepassingen toegang tot de drijvende-kommahardware net als in MS-DOS. Als er geen drijvende-kommahardware aanwezig is, wordt de toepassing geen emulatie geleverd. Daarom moet de toepassing een eigen emulatie opgeven.

Windows NT op RISC-computers gebruikt ingebouwde Intel x86-emulatie-code. Windows NT 3.5 of Windows NT 3.51, inclusief emulators 80286 en 80287; Windows NT 4.0 bevat een i486-emulator. MS-DOS-toepassingen worden altijd uitgevoerd als de Intel drijvende-coprocessors aanwezig zijn.

POSIX-toepassingen

Als u met Win32-toepassingen POSIX-toepassingen kunnen ervan uitgaan dat volledig floating-point support altijd bestaat.

De POSIX-standaard definieert een manier om te schakelen op drijvende niet uitzonderingen. Daarom moeten van POSIX-toepassingen die gebruikmaken van drijvende uitzonderingen afhankelijk van systeem-specifieke functies. Een POSIX-toepassingen gecompileerd Microsoft Visual C++ de zwevende uitzonderingen kunt inschakelen met de functie _controlfp . Drijvende uitzonderingen kunnen vervolgens worden gevangen door SIGFPE, of als de toepassing moet doen meer dan alleen de uitzondering onderscheppen door de functie fpieee_flt .

OS/2-toepassingen

Drijvende-ondersteuning in dit subsysteem overeenkomt met die van OS/2: als zwevende- punt hardware is niet geïnstalleerd, de toepassing van de OS/2 moet bieden een eigen emulatie. Het subsysteem OS/2 wordt alleen ondersteund op Intel x86-versies van Windows NT en de opvolgende taken.

Windows 95, Windows 98, Windows 98 Tweede editie en Windows Me

Win32-toepassingen

De Windows 95 via de platforms Windows Me bieden dezelfde drijvende ondersteuning voor Win32-toepassingen als de Windows NT en Windows 2000-platforms.

Win16-toepassingen

Win16-toepassingen zijn gewoonlijk gecompileerd opnemen correctie records in hun objectcode met drijvende instructies en oproepen de 16-bits floating-point emulator, WIN87EM. Als de computer processor drijvende instructies ondersteunt of een coprocessor aanwezig is, de lader van de correcties wordt opgelost drijvende instructies en zal worden uitgevoerd. Als drijvende-kommahardware niet wordt gedetecteerd, de lader herleidt de correcties op het aanroepen van WIN87EM en de emulator wordt uitgevoerd.

WIN87EM is niet onderschept drijvende instructies die toepassingen uitvoeren; wordt uitgevoerd alleen als expliciet wordt genoemd. Daarom ondersteuning voor emulatie die vertelt de linker correctie records plaatsen in het uitvoerbare bestand van Win16 toepassingen compileren.

Apparaatstuurprogramma 's

Virtueel apparaatstuurprogramma (VxD's) kunnen drijvende instructies maar moeten de virtuele Math Coprocessor Device interface opslaan en herstellen van de status van de coprocessor voor drijvende komma. De VxD moet ook een uitzonderingshandler drijvende uitzonderingen registreren.

MS-DOS-toepassingen

De Windows 95 via platforms van Windows Me in de Intel MS-DOS-toepassingen uitvoeren x86 processor virtuele 8086-modus. MS-DOS-toepassingen toegang tot de drijvende-kommahardware net als in MS-DOS. Als er geen drijvende-kommahardware aanwezig is, wordt de toepassing geen emulatie geleverd. Daarom moet de toepassing eigen emulatie bieden, worden doorgaans uitgevoerd door een MS-DOS-toepassing runtime library.

De producten die worden beschreven in dit artikel worden geproduceerd door bedrijven die onafhankelijk van Microsoft zijn. Microsoft biedt geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of betrouwbaarheid van deze producten.

Eigenschappen

Artikel ID: 102555 - Laatste beoordeling: zaterdag 1 maart 2014 - Wijziging: 4.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Win32-API op de volgende platformen
    • Microsoft Windows 98 Standard Edition
    • Microsoft Windows Millennium Edition
Trefwoorden: 
kbnosurvey kbarchive kbfloatpoint kbinfo kbkernbase kbprogramming kbmt KB102555 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende: 102555

Geef ons feedback

 

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