INFO: Como Windows manipula cálculos de ponto flutuante

Traduções deste artigo Traduções deste artigo
ID do artigo: 102555 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Todas as plataformas Microsoft Windows fornecem aplicativos Win32 um ambiente comum de ponto flutuante, mas diferem em seu suporte para drivers de dispositivo e, em seu suporte para aplicativos Win16, Portable Brazilian OS Interface (POSIX), MS-DOS e baseado em OS/2.

Este artigo descreve como cada uma dessas plataformas fornece suporte de ponto flutuante para aplicativos e drivers de dispositivo.

Mais Informações

Esta seção descreve primeiro a funcionalidade do ponto flutuante no Windows NT, Windows 2000 e seus sucessores e descreve a mesma no Windows 95, Windows 98, Windows 98 Second Edition e sistemas baseados no Windows Millennium Edition (Me). Membros de cada grupo fornecem suporte de ponto flutuante semelhante uns aos outros, mas os dois grupos são diferentes uns dos outros devido a diferenças arquiteturais subjacentes.

Windows NT e seus sucessores

Aplicativos Win32

Cada thread em um aplicativo Win32 tem seu próprio estado de execução que inclui os registros de finalidade gerais e os registradores de ponto flutuante. Portanto, execução de ponto flutuante e manipulação de exceção são controladas em uma base por thread. Isso permite que segmentos individuais em um processo para ajustar o comportamento de ponto flutuante processador para usar arredondamento especializados ou controle de precisão e manipulação de exceção.

Exceções de ponto flutuante são tratadas pela exceção Win32 estruturado tratamento mecanismo (SEH) incorporado no kernel do Win32. Quando um thread faz com que uma exceção de ponto flutuante, o mecanismo SEH procura um manipulador de exceção registrado pelo thread em tratar a exceção. Se o thread não manipula a exceção, o processo que possui será fechado.

Windows NT e seus sucessores oferecem suporte completo ponto flutuante para aplicativos Win32, mesmo em processadores x 86 Intel que não possuem suporte interno de ponto flutuante. Emulação é fornecida pelo kernel Win32 para computadores que não tenham o hardware do modo ponto flutuante. Portanto, os compiladores não são necessário que fornecer sua próprias emulação de ponto flutuante.

Idiomas podem ter as bibliotecas de tempo de execução ou sistemas de tempo de execução que fornecem padrão manipuladores de exceção de ponto flutuante. Por exemplo, biblioteca de tempo de execução do Microsoft Visual C++ fornece manipulação de exceção ponto flutuante padrão e inclui funções como _controlfp para determinar e ajustando o hardware de ponto flutuante de arredondamento, controle de precisão e comportamento de manipulação de exceção.

Aplicativos Win16

Aplicativos Win16 normalmente são compilados com registros de ajuste no seu código de objeto que contêm instruções de ponto flutuante e chamadas para o emulador de ponto flutuante de 16 bits, WIN87EM. Se o processador do computador oferecer suporte a instruções de ponto flutuante, ou se um co-processador matemático estiver presente, o carregador resolve as ajustes para as instruções de ponto flutuante e as instruções serão executadas. Se o hardware do modo ponto flutuante não é detectado, o carregador resolve as ajustes para as chamadas para WIN87EM e o emulador será executado.

WIN87EM não interceptar instruções de ponto flutuante que aplicativos executados; ele é executado somente quando ele é explicitamente chamado. Por isso, certifique-se de que aplicativos Win16 são compilados para oferecer suporte a emulação, que irá informar o vinculador a colocar os registros de ajuste o executável.

Windows NT em computadores baseados em RISC use Intel x 86 processador emulador código do Windows NT para executar aplicativos Win16. Windows NT 3.5 e o Windows NT 3.51 incluem emuladores 80286 e 80287; Windows NT 4.0 inclui um emulador i486. Aplicativos Win16 são sempre executem como se o coprocessors de ponto flutuante Intel estiverem presentes. Portanto, WIN87EM não fornece emulação de ponto flutuante em computadores RISC.

Drivers de dispositivo

Drivers de modo kernel para o Windows 2000 e seus sucessores podem usar instruções de ponto flutuante ao IRQL é menor ou igual a DISPATCH_LEVEL mas explicitamente deve preservar o estado de ponto flutuante do processador para que o contexto do chamador ponto flutuante não é alterado. Funções de driver necessário chamar KeSaveFloatingPointState antes de executar quaisquer operações de ponto flutuante e devem chamar KeRestoreFloatingPointState antes de retornar ao chamador. Essas funções estão documentadas no Windows 2000 Driver Development Kit (DDK).

Drivers de modo kernel Windows NT 3.51 e 4.0 do Windows não podem usar instruções de ponto flutuante, porque opções de pilha de modo kernel não preservar os registradores de ponto flutuante. Se um driver de modo kernel faz usar qualquer instrução de ponto flutuante, isso pode causar a corrupção de estado numérico do aplicativo de modo de usuário ou uma falha do sistema (falhar).

Aplicativos do MS-DOS

Windows NT e seus sucessores no Intel x 86 executar aplicativos do MS-DOS no modo de 8086 Virtual Intel x 86 do processador. Aplicativos do MS-DOS podem acessar o hardware de ponto flutuante como fariam no MS-DOS. Se nenhum hardware de ponto flutuante estiver presente, não emulação é fornecida para o aplicativo. Portanto, o aplicativo deve fornecer seu próprio emulação.

O Windows NT em computadores com RISC utiliza interno Intel x 86 emulação de código. Windows NT 3.5 e o Windows NT 3.51 incluem emuladores 80286 e 80287; Windows NT 4.0 inclui um emulador i486. Aplicativos do MS-DOS sempre executem como se o coprocessors de ponto flutuante Intel estão presentes.

Aplicativos POSIX

Como com aplicativos Win32, aplicativos POSIX podem assumir que suporte completo ponto flutuante de sempre existe.

O padrão POSIX não define uma maneira de ativar exceções de ponto flutuante. Portanto, os aplicativos POSIX que usam exceções de ponto flutuante devem contar com recursos específicos do sistema. Um aplicativo POSIX compilado com o Microsoft Visual C++ pode ativar exceções flutuantes usando a função _controlfp . Exceções de ponto flutuante, em seguida, podem ser detectadas pelo SIGFPE ou, se o aplicativo precisa fazer mais do que apenas capturar a exceção, pela função fpieee_flt .

Aplicativos dos / 2

Suporte de ponto flutuante nesse subsistema corresponde dos / 2: se o hardware de ponto flutuante não estiver instalado, o aplicativo dos / 2 deve fornecer seu próprio emulação. O subsistema OS/2 é suportado apenas nas versões de x 86 Intel do Windows NT e seus sucessores.

O Windows 95, Windows 98, Windows 98 Second Edition e Windows Me

Aplicativos Win32

O Windows 95 através de plataformas Windows Me fornecem o mesmo suporte de ponto flutuante para aplicativos Win32 como as plataformas Windows NT e Windows 2000.

Aplicativos Win16

Aplicativos Win16 normalmente são compilados para incluir registros de ajuste no seu código de objeto que contêm instruções de ponto flutuante e chamadas para o emulador de ponto flutuante de 16 bits, WIN87EM. Se o processador do computador oferecer suporte a instruções de ponto flutuante ou se um co-processador matemático estiver presente, o carregador resolve as ajustes para as instruções de ponto flutuante e eles serão executados. Se o hardware do modo ponto flutuante não é detectado, o carregador resolve as ajustes para as chamadas para WIN87EM e o emulador será executado.

WIN87EM não interceptar instruções de ponto flutuante que aplicativos executados; ele é executado somente quando ele é explicitamente chamado. Portanto, compile aplicativos Win16 para oferecer suporte a emulação, que irá informar o vinculador a colocar os registros de ajuste o executável.

Drivers de dispositivo

Drivers de dispositivo virtual (VxDs) podem usar instruções de ponto flutuante, mas devem usar a interface de dispositivo virtual de co-processador de matemática para salvar e restaurar o estado do co-processador ponto flutuante. O VxD também deve registrar um manipulador de exceção para exceções de ponto flutuante.

Aplicativos do MS-DOS

O Windows 95 através de plataformas Windows Me executar aplicativos do MS-DOS no modo de 8086 Virtual Intel x 86 do processador. Aplicativos do MS-DOS podem acessar o hardware de ponto flutuante como fariam no MS-DOS. Se nenhum hardware de ponto flutuante estiver presente, não emulação é fornecida para o aplicativo. Portanto, o aplicativo deve fornecer sua própria simulação, como geralmente é executada pela biblioteca de tempo de execução do aplicativo do MS-DOS.

Os produtos de terceiros descritos neste artigo são fabricados por empresas que são independentes da Microsoft. A Microsoft não oferece garantia, implícita ou não, em relação ao desempenho ou à confiabilidade desses produtos.

Propriedades

ID do artigo: 102555 - Última revisão: quinta-feira, 27 de fevereiro de 2014 - Revisão: 2.3
A informação contida neste artigo aplica-se a:
  • Interface de Programação de Aplicativos do Microsoft Win32 nas seguintes 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
Palavras-chave: 
kbnosurvey kbarchive kbmt kbfloatpoint kbinfo kbkernbase kbprogramming KB102555 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 102555

Submeter comentários

 

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