INFO: Como processa cálculos de vírgula flutuante

Traduções de Artigos Traduções de Artigos
Artigo: 102555 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Todas as plataformas do Microsoft Windows fornecem aplicações Win32 um ambiente de vírgula flutuante comuns, mas diferem no respectivo suporte para controladores de dispositivo e no respectivo suporte para aplicações Win16 POSIX (Portable Operating System Interface), MS-DOS e baseado nos / 2.

Este artigo descreve como cada uma destas plataformas fornece suporte de vírgula flutuante para aplicações e controladores de dispositivo.

Mais Informação

Esta secção descreve primeiro a funcionalidade de vírgula flutuante no Windows NT, Windows 2000 e respectivos sucessores e descreve o mesmo no Windows 95, Windows 98, Windows 98 Segunda Edição e sistemas baseados no Windows Millennium Edition (Me). Membros de cada grupo fornecem suporte de vírgula flutuante semelhante entre si, mas os dois grupos diferem entre si devido a diferenças arquitecturais subjacentes.

Windows NT e respectivos sucessores

Aplicações do Win32

Cada thread uma aplicação de Win32 tem o respectivo estado de execução que inclui os registos com finalidades genéricas e os registos de vírgula flutuante. Por conseguinte, execução de vírgula flutuante e processamento de excepções são controladas numa base por thread. Isto permite que threads individuais de um processo para ajustar o comportamento do processador com vírgula flutuante para utilizar arredondamento especializadas ou controlo de precisão e processamento de excepções.

Excepções de vírgula flutuante são processadas pela excepção de Win32 estruturado processamento mecanismo (SEH) incorporado no kernel do Win32. Quando um thread faz com que uma excepção de vírgula flutuante, o mecanismo de substituições SEH procura um processador de excepções registado pelo thread para processar a excepção. Se o thread não processa a excepção, o processo proprietário está fechado.

Windows NT e respectivos sucessores fornecem suporte completo de vírgula flutuante para aplicações do Win32, mesmo em processadores x 86 Intel que não têm suporte incorporado de vírgula flutuante. Emulação é fornecida pelo kernel Win32 para computadores que não são necessário hardware de vírgula flutuante. Por conseguinte, compiladores não tem de fornecer as suas próprias emulação de vírgula flutuante.

Idiomas podem ter tempo de execução bibliotecas ou sistemas de tempo de execução que fornecem predefinido processadores de excepções com vírgula flutuante. Por exemplo, Microsoft Visual C++ runtime biblioteca fornece processamento de excepções com vírgula flutuante de predefinição e inclui funções como _controlfp para determinar e ajustar o hardware de vírgula flutuante arredondamento, controlo de precisão e comportamento de processamento de excepções.

Aplicações Win16

Aplicações Win16 normalmente são compiladas efectuar registos de correcção no respectivo código de objecto que contêm instruções de vírgula flutuante e chamadas para o emulador de vírgula flutuante de 16 bits, WIN87EM. Se o processador do computador suporta instruções de vírgula flutuante, ou se existir um coprocessador, o carregador resolve as correcções as instruções de vírgula flutuante e as instruções serão executadas. Se não for detectado hardware de vírgula flutuante, o carregador resolve as correcções para as chamadas para WIN87EM e será executado o emulador.

WIN87EM não interceptar instruções de vírgula flutuante que as aplicações executadas; que é executada apenas quando chama explicitamente. Assim, certifique-se de que as aplicações Win16 são compiladas para suportar emulação indicará linker para colocar os registos de correcção o executável.

Windows NT em computadores baseados em RISC utilizar código de emulador de processador do Windows NT Intel x 86 para executar aplicações Win16. Windows NT 3.5 e Windows NT 3.51 incluem emuladores 80286 e 80287; Windows NT 4.0 inclui um emulador de i486. Aplicações Win16 são sempre executados como se o coprocessors de vírgula flutuante do Intel estivessem presentes. Por conseguinte, WIN87EM não fornece emulação de vírgula flutuante em computadores em RISC.

Controladores de dispositivo

Controladores de modo kernel para o Windows 2000 e respectivos sucessores podem utilizar instruções de vírgula flutuante é menor ou igual a DISPATCH_LEVEL IRQL, mas tem explicitamente preservar o estado de vírgula flutuante do processador para que o contexto de vírgula flutuante do emissor não é alterado. Funções do controlador tem de chamar KeSaveFloatingPointState antes de efectuar quaisquer operações de vírgula flutuante e tem de chamar KeRestoreFloatingPointState antes de devolver o autor da chamada. Estas funções estão documentadas no Windows 2000 Driver Development Kit (DDK).

Controladores de modo kernel do Windows NT 3.51 e 4.0 do Windows não podem utilizar instruções de vírgula flutuante porque parâmetros de pilha de modo kernel não preserva os registos de vírgula flutuante. Se um controlador de modo kernel é utilizar qualquer instrução de vírgula flutuante, isto pode causar danos do estado numérico da aplicação de modo de utilizador ou uma falha do sistema (falhar) em.

Aplicações do MS-DOS

Windows NT e respectivos sucessores no Intel x 86 executar as aplicações do MS-DOS no modo de 8086 Virtual Intel x 86 do processador. As aplicações do MS-DOS podem aceder o hardware de vírgula flutuante, tal como o fariam no MS-DOS. Se não existir nenhum hardware de vírgula flutuante, sem emulação é fornecida para a aplicação. Por conseguinte, a aplicação tem de fornecer a suas próprias emulação.

Windows NT em computadores baseados em RISC utiliza código de emulação de x 86 Intel incorporado. Windows NT 3.5 e Windows NT 3.51 incluem emuladores 80286 e 80287; o Windows NT 4.0 inclui um emulador de i486. As aplicações do MS-DOS são sempre executados como se o coprocessors de vírgula flutuante do Intel estivessem presentes.

Aplicações POSIX

Como com aplicações do Win32, aplicações POSIX podem assumir que suporte completo de vírgula flutuante sempre existe.

O POSIX padrão não define uma forma para activar excepções de vírgula flutuante. Por conseguinte, as aplicações POSIX que utilizam excepções de vírgula flutuante tem dependem funcionalidades específicas do sistema. Uma aplicação de POSIX compilada com o Microsoft Visual C++ pode activar excepções flutuantes utilizando a função _controlfp . Excepções de vírgula flutuante, em seguida, podem ser detectadas por SIGFPE ou, se necessitar de fazer mais do que apenas a aplicação chamar a excepção pela função fpieee_flt .

Aplicações dos / 2

Suporte de vírgula flutuante neste subsistema corresponde dos / 2: Se o hardware de ponto flutuante não estiver instalado, a aplicação OS/2 tem de fornecer a suas próprias emulação. O subsistema OS/2 é suportado apenas em versões do Windows NT e respectivos sucessores em Intel x 86.

O Windows 95, Windows 98, Windows 98 Segunda Edição e Windows Me

Aplicações do Win32

O Windows 95 através de plataformas Windows Me fornece o mesmo suporte de vírgula flutuante para aplicações do Win32, as plataformas Windows NT e Windows 2000.

Aplicações Win16

Aplicações Win16 normalmente são compiladas para incluir registos de correcção no respectivo código de objecto que contêm instruções de vírgula flutuante e chamadas para o emulador de vírgula flutuante de 16 bits, WIN87EM. Se o processador do computador suporta instruções de vírgula flutuante ou se um coprocessador estiver presente, o carregador resolve as correcções as instruções de vírgula flutuante e serão executados. Se não for detectado hardware de vírgula flutuante, o carregador resolve as correcções para as chamadas para WIN87EM e será executado o emulador.

WIN87EM não interceptar instruções de vírgula flutuante que as aplicações executadas; que é executada apenas quando chama explicitamente. Por conseguinte, compile as aplicações Win16 suporta a emulação indicará linker para colocar os registos de correcção o executável.

Controladores de dispositivo

Controladores de dispositivos virtuais (VxDs) podem utilizar instruções de vírgula flutuante, mas tem de utilizar a interface de dispositivo de coprocessador matemático virtual para guardar e restaurar o estado do coprocessador vírgula flutuante. O VxD também tem de registar um processador de excepções para excepções de vírgula flutuante.

Aplicações do MS-DOS

O Windows 95 através de plataformas Windows Me executar aplicações de MS-DOS no modo 8086 virtual de Intel x 86 do processador. As aplicações do MS-DOS podem aceder o hardware de vírgula flutuante, tal como o fariam no MS-DOS. Se não existir nenhum hardware de vírgula flutuante, sem emulação é fornecida para a aplicação. Por este motivo, a aplicação tem de fornecer a suas próprias emulação, como é normalmente efectuada pela biblioteca de tempo de execução da aplicação de MS-DOS.

Os produtos de outros fabricantes que são discutidos neste artigo são fabricados por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, expressa ou implícita, relativamente ao desempenho ou fiabilidade destes produtos.

Propriedades

Artigo: 102555 - Última revisão: 1 de março de 2014 - Revisão: 2.3
A informação contida neste artigo aplica-se a:
  • Microsoft Win32 Application Programming Interface 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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