INFO: Wie Windows Gleitkommaberechnungen behandelt

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 102555 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Alle Microsoft Windows-Plattformen Win32-Anwendungen bieten eine allgemeine Gleitkommazahlen Umgebung verwendeten unterscheiden sich jedoch in Ihre Unterstützung für Gerätetreiber und Ihre Unterstützung für Win16, POSIX (Portable Operating System Interface), MS-DOS- und OS/2-basierten Anwendungen.

Dieser Artikel beschreibt, wie jedes dieser Plattformen Gleitkommaunterstützung, Anwendungen und Gerätetreiber bereitstellt.

Weitere Informationen

Dieser Abschnitt beschreibt zuerst Gleitkommazahlen Funktionalität in Windows NT, Windows 2000 und seine Nachfolger und beschreibt in Windows 95, Windows 98, Windows 98 Second Edition und Windows Me-basierte Systeme identisch. Mitglieder jeder Gruppe bieten ähnliche Gleitkommaunterstützung miteinander, aber die beiden Gruppen unterscheiden aufgrund der zugrunde liegenden Architektur Unterschiede.

Windows NT und seine Nachfolger

Win32-Anwendungen

Jeder Thread in einer Win32-Anwendung hat eigene Ausführungsstatus, die die Allzweckregister und die Gleitkommaregister enthält. Daher werden Gleitkommazahlen Ausführung und Ausnahmebehandlung auf einer Basis pro Thread gesteuert. Dadurch können einzelne Threads in einem Prozess das Verhalten der Gleitkommazahlen Prozessor spezielle Rundung oder Genauigkeit-Steuerelement und Ausnahmebehandlung angepasst.

Ausnahmen werden von der Win32 structured Ausnahmebehandlungsmechanismus (SEH) in der Win32-Kernel integriert behandelt. Wenn ein Thread eine Gleitkomma-Ausnahme auslöst, sucht der SEH-Mechanismus ein Ausnahmehandler registriert, indem der Thread die Ausnahme behandeln. Wenn der Thread nicht die Ausnahme behandelt wird, wird der Prozess, der ihn besitzt geschlossen.

Windows NT und seine Nachfolger bieten vollständige Gleitkommazahlen Unterstützung für Win32-Anwendungen auch auf Intel x 86-Prozessoren, die nicht integrierten Gleitkommaunterstützung verfügen. Emulation wird vom Win32-Kernel für Computer bereitgestellt, die keine Gleitkomma-Hardware haben. Daher müssen Compiler keinen eigenen Gleitkomma-Emulation bereitstellen.

Sprachen möglicherweise Laufzeitbibliotheken oder Common Language Runtime-Systemen, die standardmäßig Gleitkommazahlen Ausnahmehandler bereitstellen. Beispielsweise Microsoft Visual C++ Runtime Bibliothek bietet standardmäßig Gleitkommazahlen Ausnahmebehandlung und enthält Funktionen wie z. B. _controlfp für bestimmen und der Gleitkomma-Hardware Rundung, Genauigkeit-Steuerelement und Ausnahmebehandlungsverhalten anpassen.

Win16-Anwendungen

Win16-Anwendungen sind in der Regel kompiliert, um Fixup-Datensätze in Ihrem Code-Objekt verfügen, die Gleitkommazahlen Anweisungen und Aufrufe an den 16-Bit-Gleitkommazahlen Emulator WIN87EM enthalten. Wenn der Prozessor des Computers Gleitkommazahlen Anweisungen unterstützt oder ein Koprozessor vorhanden ist, das Ladeprogramm behebt die Korrekturen der Gleitkommazahlen Anweisungen und werden die Anweisungen ausgeführt. Wenn Gleitkomma-Hardware nicht erkannt wird, das Ladeprogramm die Korrekturen in die Aufrufe von WIN87EM aufgelöst und der Emulator wird ausgeführt.

WIN87EM ist nicht abfangen Gleitkommazahlen Anweisungen, die Anwendungen ausgeführt werden; Ausführung nur, wenn Sie explizit aufgerufen wird. Stellen Sie daher sicher, dass Win16-Anwendungen-Emulation unterstützen, die den Linker an Fixup Datensätze in der ausführbaren Datei gebracht Teilen wird kompiliert werden.

Windows NT auf RISC-basierten Computern mithilfe von Windows NT Intel x 86 Prozessor Emulator Code Win16-Anwendungen ausgeführt werden. Windows NT 3.5 und Windows NT 3.51 enthalten 80286 und 80287 Emulatoren; Windows NT 4.0 einen Emulator i486 enthält. Win16-Anwendungen ausführen immer als wenn die Intel Gleitkomma-Coprocessors vorhanden sind. WIN87EM stellt daher keine Gleitkomma-Emulation auf RISC-Computern bereit.

Gerätetreiber

Kernelmodus-Treiber für Windows 2000 und seine Nachfolger können Gleitkommazahlen Anweisungen verwenden, wenn IRQL kleiner oder gleich DISPATCH_LEVEL ist, aber Gleitkommazahlen Zustand des Prozessors muss explizit beibehalten werden, damit Gleitkommazahlen Kontext des Aufrufers nicht geändert wird. Treiberfunktionen müssen KeSaveFloatingPointState aufrufen, bevor alle Gleitkommaoperationen durchgeführt und müssen KeRestoreFloatingPointState aufrufen, bevor an den Aufrufer zurückgegeben. Diese Funktionen sind in Windows 2000 Driver Development Kit (DDK) dokumentiert.

Windows NT 3.51 und Windows 4.0 Kernelmodus-Treiber können Gleitkommazahlen Anweisungen verwenden, da Kernelmodus-Stapel wechselt die Gleitkommaregister nicht beibehalten. Wenn ein Kernelmodus-Treiber unterstützt alle Gleitkomma-Anweisung verwenden, kann dies entweder Beschädigung von numerischen Zustand der Benutzermodus-Anwendung oder ein Systemfehler (stürzt ab) führen.

MS-DOS-Anwendungen

Ausführung von MS-DOS-Anwendungen im virtuellen 8086-Modus der Intel x 86-Prozessor des Windows NT und seine Nachfolger auf Intel x 86. MS-DOS-Anwendungen können die Gleitkomma-Hardware zugreifen, wie in MS-DOS. Wenn keine Gleitkomma-Hardware vorhanden ist, wird keine Emulation für die Anwendung bereitgestellt. Daher muss die Anwendung einen eigenen Emulation bereitstellen.

Windows NT auf RISC-basierten Computern verwendet integrierte Intel x 86-Emulations-Code. Windows NT 3.5 und Windows NT 3.51 enthalten 80286 und 80287 Emulatoren; Windows NT 4.0 enthält einen i486-Emulator. MS-DOS-Anwendungen ausgeführt immer, als wenn die Intel Gleitkomma-Coprocessors vorhanden sind.

POSIX-Anwendungen

Wie bei Win32-Anwendungen POSIX-Anwendungen, vollständige Gleitkommaunterstützung immer davon ausgehen können ist vorhanden.

Das POSIX-standard definiert keine Möglichkeit, Gleitkommaausnahmen aktivieren. POSIX-Anwendungen, Gleitkommaausnahmen müssen daher auf System-spezifische Features verlassen. Eine POSIX-Anwendung mit Microsoft Visual C++ kompiliert kann mithilfe der Funktion _controlfp unverankerten Ausnahmen aktivieren. Gleitkommaausnahmen dann durch SIGFPE abgefangen werden können, oder wenn die Anwendung mehr als nur muss die Ausnahme durch die Funktion Fpieee_flt abfangen.

OS/2-Anwendungen

Gleitkommaunterstützung in dieses Subsystem entspricht der OS/2: Wenn unverankerte Punkt Hardware nicht installiert ist, muss die OS/2-Anwendung eigene Emulation bereitstellen. Das OS/2-Teilsystem wird nur auf Intel x 86-Versionen von Windows NT und seine Nachfolger unterstützt.

Windows 95, Windows 98, Windows 98 Second Edition und Windows Me

Win32-Anwendungen

Windows 95 über Windows Me-Plattformen bieten die gleiche Gleitkommazahlen Unterstützung für Win32-Anwendungen als Windows NT und Windows 2000-Plattformen.

Win16-Anwendungen

Win16-Anwendungen sind in der Regel kompiliert, um Fixup Einträge enthalten, in deren-Objekt Code, der Gleitkommazahlen Anweisungen und Aufrufe an den 16-Bit-Gleitkommazahlen Emulator WIN87EM enthalten. Wenn der Prozessor des Computers Gleitkommazahlen Anweisungen unterstützt oder ein Koprozessor vorhanden ist, das Ladeprogramm behebt die Fixups Gleitkommazahlen Anweisungen und ausgeführt werden. Wenn Gleitkomma-Hardware nicht erkannt wird, das Ladeprogramm die Korrekturen in die Aufrufe von WIN87EM aufgelöst und der Emulator wird ausgeführt.

WIN87EM ist nicht abfangen Gleitkommazahlen Anweisungen, die Anwendungen ausgeführt werden; Ausführung nur, wenn Sie explizit aufgerufen wird. Kompilieren Sie Win16-Anwendungen-Emulation unterstützen, die den Linker an Fixup Datensätze in der ausführbaren Datei gebracht Teilen wird daher.

Gerätetreiber

Virtuelle Gerätetreiber (VxDs) können Gleitkommazahlen Anweisungen jedoch Geräteschnittstelle von virtuellen Math Coprozessor speichern und Wiederherstellen den Zustand der Gleitkommazahlen Coprozessor verwenden müssen. Der VxD muss auch einen Ausnahmehandler für Gleitkommaausnahmen registrieren.

MS-DOS-Anwendungen

Die Windows 95 über Windows Me Plattformen MS-DOS-Anwendungen im der Intel x 86-Prozessor des virtuellen 8086-Modus ausführen. MS-DOS-Anwendungen können die Gleitkomma-Hardware zugreifen, wie in MS-DOS. Wenn keine Gleitkomma-Hardware vorhanden ist, wird keine Emulation für die Anwendung bereitgestellt. Die Anwendung muss daher eigene Emulation bereitstellen, wie in der Regel von der MS-DOS-Anwendung Runtime Bibliothek durchgeführt wird.

Die Produkte von Drittanbietern, die in diesem Artikel behandelt werden, sind von Unternehmen hergestellt, die von Microsoft unabhängig sind. Microsoft gewährt keine implizite oder sonstige Garantie in Bezug auf die Leistung oder Zuverlässigkeit dieser Produkte.

Eigenschaften

Artikel-ID: 102555 - Geändert am: Samstag, 1. März 2014 - Version: 2.3
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Win32 Application Programming Interface, wenn verwendet mit:
    • Microsoft Windows 95
    • Microsoft Windows 98 Standard Edition
    • Microsoft Windows Millennium Edition
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
Keywords: 
kbnosurvey kbarchive kbmt kbfloatpoint kbinfo kbkernbase kbprogramming KB102555 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 102555
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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