INFO: Cómo trata los cálculos de punto flotante

Seleccione idioma Seleccione idioma
Id. de artículo: 102555 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

Todas las plataformas Microsoft Windows proporcionan aplicaciones Win32 de un entorno de punto flotante común, pero difieren en su compatibilidad con controladores de dispositivo y su compatibilidad con aplicaciones Win16, Portable Operating System Interface (POSIX), MS-DOS y basado en OS/2.

En este artículo describe cómo cada una de estas plataformas proporciona compatibilidad con punto flotante a las aplicaciones y los controladores de dispositivo.

Más información

Esta sección describe primero la funcionalidad de punto flotante en Windows NT, Windows 2000 y sus sucesores y describe a continuación, el mismo en Windows 95, Windows 98, Windows 98 Segunda edición y sistemas basados en Windows Millennium Edition. Miembros de cada grupo proporcionan compatibilidad similar de punto flotante entre sí, pero los dos grupos difieren entre sí debido a diferencias de arquitectura subyacentes de.

Windows NT y sus sucesoras

Aplicaciones Win32

Cada subproceso en una aplicación Win32 tiene su propio estado de ejecución incluye los registros de propósito generales y los registros de punto flotante. Por lo tanto, ejecución de punto flotante y excepciones se controlan por subproceso. Esto permite que los subprocesos individuales en un proceso para ajustar el comportamiento del procesador de punto flotante utilizar redondeo especializadas o control de precisión y control de excepciones.

Las excepciones de punto flotante se controlan mediante el control (SEH) mecanismo integrado en el núcleo de Win32 de excepciones de Win32 estructurado. Cuando un subproceso produce una excepción de punto flotante, el mecanismo SEH busca un controlador de excepciones registrado por el subproceso para controlar la excepción. Si el subproceso no controla la excepción, se cierra el proceso que lo posee.

Windows NT y sus sucesores proporcionan compatibilidad completa de punto flotante para aplicaciones Win32, incluso en procesadores x 86 de Intel que no tienen compatibilidad integrada con punto flotante. El núcleo de Win32 proporciona la emulación de equipos que no tienen hardware de punto flotante. Por lo tanto, los compiladores no tiene que proporcionar su propia emulación de punto flotante.

Lenguajes pueden tener las bibliotecas de tiempo de ejecución o sistemas de tiempo de ejecución que proporcionan controladores de excepción en punto flotante predeterminados. Por ejemplo, biblioteca de tiempo de ejecución Microsoft Visual C++ proporciona excepciones de punto flotante predeterminada y incluye funciones como _controlfp para determinar y ajustar el hardware de punto flotante redondeo, control de precisión y comportamiento del control de excepción.

Aplicaciones de Win16

Las aplicaciones de Win16 normalmente se compilan para tener registros de corrección en su código de objeto que contienen instrucciones de punto flotante y llamadas para el emulador de punto flotante de 16 bits, Win87em. Si el procesador del equipo admite instrucciones de punto flotante, o bien, si está presente un coprocesador, el cargador resuelve las correcciones a las instrucciones de punto flotante y se ejecutarán las instrucciones. Si no se detecta el hardware de punto flotante, el cargador resuelve las correcciones en las llamadas a Win87em y se ejecutará el emulador.

Win87em no interceptar instrucciones de punto flotante que ejecutan aplicaciones; se ejecuta sólo cuando se llama explícitamente a. Por tanto, asegúrese de que las aplicaciones de Win16 se compilan para admitir la emulación, que indicará el vinculador para poner los registros de corrección en el archivo ejecutable.

Windows NT en equipos basados en RISC utilizar código de emulador de Windows NT Intel x 86 procesador para ejecutar aplicaciones Win16. Windows NT 3.5 y 3.51 de Windows incluyen emuladores 80286 y 80287; Windows NT 4.0 incluye un emulador i486. Las aplicaciones de Win16 siempre se ejecutan como si están presentes los coprocesadores de punto flotante de Intel. Por lo tanto, Win87em no proporciona emulación de punto flotante en equipos RISC.

Controladores de dispositivo

Controladores en modo núcleo para Windows 2000 y sus sucesores pueden utilizar instrucciones de punto flotante cuando IRQL es menor o igual que DISPATCH_LEVEL pero explícitamente debe conservar el estado de punto flotante del procesador para que no se cambie el contexto del llamador punto flotante. Las funciones de controlador deben llamar a KeSaveFloatingPointState antes de realizar operaciones de punto flotante y deben llamar a KeRestoreFloatingPointState antes de devolver al llamador. Estas funciones se documentan en el Kit de desarrollo de controladores (DDK) de Windows 2000.

Controladores de Windows NT 3.51 y 4.0 de Windows en modo de núcleo no pueden utilizar instrucciones de punto flotante, porque modificadores de la pila de modo de núcleo no conservan los registros de punto flotante. Si un controlador de modo núcleo lo utiliza cualquier instrucción de punto flotante, esto puede ocasionar bien daños de estado numérico de la aplicación de modo de usuario o un error de sistema (se bloquee).

Aplicaciones de MS-DOS

Windows NT y sus sucesores en Intel x 86 ejecutan aplicaciones de MS-DOS en modo 8086 virtual de Intel x 86 del procesador. Las aplicaciones de MS-DOS pueden tener acceso a hardware de punto flotante igual que harían en MS-DOS. Si no hay hardware de punto flotante está presente, no se proporciona emulación de la aplicación. Por lo tanto, la aplicación debe proporcionar su propia emulación.

Windows NT en equipos basados en RISC utiliza código de emulación de x 86 de Intel integrada. Windows NT 3.5 y 3.51 de Windows incluyen emuladores 80286 y 80287; Windows NT 4.0 incluye un emulador i486. Las aplicaciones de MS-DOS siempre se ejecutan como si están presentes los coprocesadores de punto flotante de Intel.

Aplicaciones POSIX

Como con las aplicaciones Win32, aplicaciones POSIX pueden asumir esa compatibilidad completa de punto flotante siempre existe.

El estándar POSIX no define una forma de activar las excepciones de punto flotante. Por lo tanto, las aplicaciones de POSIX que utilizan las excepciones de punto flotante deben confiar en las características específicas del sistema. Una aplicación POSIX compilada con Microsoft Visual C++ puede activar excepciones flotantes utilizando la función _controlfp . Las excepciones de punto flotante pueden capturarse por SIGFPE o, si la aplicación necesita hacer algo más que capturar la excepción, la función fpieee_flt .

Aplicaciones de OS/2

Coincide con la compatibilidad de punto flotante en este subsistema de OS/2: si no está instalado el hardware de punto flotante, la aplicación OS/2 debe proporcionar su propia emulación. El subsistema OS/2 es compatible sólo con las versiones de x 86 de Intel de Windows y sus sucesores.

Windows 95, Windows 98, Windows 98 Segunda edición y Windows Millennium Edition

Aplicaciones Win32

Windows 95 a través de plataformas de Windows Millennium Edition ofrecen la compatibilidad de punto flotante misma para las aplicaciones Win32 como las plataformas Windows NT y Windows 2000.

Aplicaciones de Win16

Las aplicaciones de Win16 normalmente se compilan para incluir en su código de objeto que contienen instrucciones de punto flotante y llamadas para el emulador de punto flotante de 16 bits, Win87em registros de corrección. Si el procesador del equipo admite instrucciones de punto flotante o un coprocesador está presente, el cargador resuelve las correcciones a las instrucciones de punto flotante y se ejecutarán. Si no se detecta el hardware de punto flotante, el cargador resuelve las correcciones en las llamadas a Win87em y se ejecutará el emulador.

Win87em no interceptar instrucciones de punto flotante que ejecutan aplicaciones; se ejecuta sólo cuando se llama explícitamente a. Por lo tanto, compilar aplicaciones de Win16 que admitan emulación, que indicará el vinculador para poner los registros de corrección en el archivo ejecutable.

Controladores de dispositivo

Controladores de dispositivo virtual (VxD) pueden utilizar instrucciones de punto flotante pero deben utilizar la interfaz de dispositivo de coprocesador matemático virtual para guardar y restaurar el estado del coprocesador de punto flotante. El VxD también debe registrar un controlador de excepción para las excepciones de punto flotante.

Aplicaciones de MS-DOS

Windows 95 a través de plataformas de Windows Millennium Edition ejecutar aplicaciones de MS-DOS en modo 8086 virtual de Intel x 86 del procesador. Las aplicaciones de MS-DOS pueden tener acceso a hardware de punto flotante igual que harían en MS-DOS. Si no hay hardware de punto flotante está presente, no se proporciona emulación de la aplicación. Por lo tanto, la aplicación debe proporcionar su propia emulación como se suele realizar mediante la biblioteca de tiempo de ejecución de la aplicación de MS-DOS.

Los productos de terceros mencionados en este artículo son fabricados por compañías independientes de Microsoft. Microsoft no otorga ninguna garantía, implícita o de otro tipo, respecto al rendimiento o confiabilidad de estos productos.

Propiedades

Id. de artículo: 102555 - Última revisión: sábado, 01 de marzo de 2014 - Versión: 2.3
La información de este artículo se refiere a:
  • Microsoft Win32 Application Programming Interface sobre las siguientes plataformas
    • 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
Palabras clave: 
kbnosurvey kbarchive kbmt kbfloatpoint kbinfo kbkernbase kbprogramming KB102555 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 102555

Enviar comentarios

 

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