情報: Windows 浮動小数点計算の処理方法

文書翻訳 文書翻訳
文書番号: 102555
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
すべて展開する | すべて折りたたむ

目次

概要

Win32 アプリケーションは、一般的な浮動小数点環境、すべての Microsoft Windows プラットフォームを提供しますは、デバイス ドライバー、および Win16、ポータブル オペレーティング システム インターフェイス (POSIX)、MS-DOS、および OS 2 ベースのアプリケーションのサポートが異なります。

この資料では、これらのプラットフォームのアプリケーションおよびデバイス ドライバーの浮動小数点サポートを提供する方法について説明します。

詳細

ここまず Windows NT、Windows 2000、およびその後続タスクは、浮動小数点の機能と、Windows 95、Windows 98、Windows 98 Second Edition、および Windows me ベースのシステムで同じ.各グループのメンバーは、のような浮動小数点サポートを提供するが、2 つのグループの基になるアーキテクチャの違いにより異なります。

Windows NT とその後続タスク

Win32 アプリケーション

Win32 アプリケーション内の各スレッドは独自の実行状態が汎用レジスタには、浮動小数点レジスタが含まれます。したがって、浮動小数点の実行と例外処理、スレッドごとの単位で制御します。特殊な丸めまたは精度の制御、および例外処理を使用するのには、浮動小数点プロセッサの動作を調整するのには、プロセスの各スレッドを許可します。

浮動小数点例外によって Win32 の構造化例外処理します。処理 (SEH) メカニズムは、Win32 カーネルに組み込まれています。スレッドがSEH 機構の例外、浮動小数点の例外を検索します。スレッドで例外を処理するために登録されているハンドラーです。場合は、スレッド閉じるを所有するプロセスの例外を処理しません。

Windows NT とその後続タスクの Win32 アプリケーションは、インテルにも完全な浮動小数点サポートを提供します。 x には、3 つの定義済みの権限レベル (高、中、および低) がありますx86 プロセッサを浮動小数点の組み込みサポートがありません。エミュレーションは浮動小数点ハードウェアがないコンピューターの場合、Win32 カーネルによって用意されています。そのため、コンパイラは、独自の浮動小数点のエミュレーションを提供する必要はありません。

言語ランタイム ライブラリを提供するランタイム システムがあります。既定浮動小数点の例外ハンドラー。例については、マイクロソフト Visual既定浮動小数点例外処理 C++ ランタイム ・ ライブラリが用意されています、関数にはなどが含まれています。 _controlfp 決定して、浮動小数点演算ハードウェアの丸め、有効桁数の制御、および例外処理動作を調整します。

Win16 アプリケーション

通常は、Win16 アプリケーションをコンパイルのフィックス アップのレコードを持っていることは、浮動小数点命令とへの呼び出しが含まれているオブジェクト コード16 ビット浮動小数点エミュレーター WIN87EM。コンピューターのプロセッサに浮動小数点命令をサポートしている場合、または、コプロセッサが存在する場合は、ローダーが、浮動小数点命令はフィックス アップを解決し、命令が実行されます。浮動小数点演算ハードウェアが検出されない場合は、ローダー、フィックス アップ WIN87EM はへの呼び出しを解決して、エミュレーターが実行されます。

WIN87EM してアプリケーションを実行する浮動小数点命令が遮断されることはないです。だけが明示的に呼び出されたときを実行します。そのため、Win16 アプリケーション、実行可能ファイルにフィックス アップのレコードを挿入するリンカーを教えてくれるエミュレーションをサポートするためにコンパイルされていることを確認します。

RISC ベースのコンピューター上の Windows NT Windows NT の Intel を使用します。 x には、3 つの定義済みの権限レベル (高、中、および低) がありますWin16 アプリケーションを実行するのには、エミュレーター コードを x86 プロセッサ。Windows NT 3.5 には Windows NT 3.51 には 80286 と 80287 のエミュレーターが含まれます。Windows NT 4.0 には i486 のエミュレーターが含まれています。インテルの浮動小数点コプロセッサが存在する場合は、必ず Win16 アプリケーションを実行します。したがって、WIN87EM 浮動小数点エミュレーション RISC コンピューターではありません。

デバイス ドライバー

IRQL が DISPATCH_LEVEL は以下ですが、呼び出し元の浮動小数点のコンテキストが変更されていないように、プロセッサの浮動小数点の状態を保つ必要があります明示的にカーネル モード ドライバーは、Windows 2000 とその後続言語は浮動小数点命令を使用できます。ドライバーの関数を呼び出す必要があります。 KeSaveFloatingPointState 前に、浮動小数点の演算を実行してコールする必要があります KeRestoreFloatingPointState 呼び出し元に返す前に。これらの関数は、Windows 2000 ドライバー開発キット (DDK) を参照してください。

Windows NT 3.51 と 4.0 の Windows カーネル モード ドライバー カーネル モードのスタック スイッチは、浮動小数点レジスタを保持しない浮動小数点命令を使用できません。場合は、カーネル モード ドライバー すべての浮動小数点命令を使用して、これは、ユーザー モード アプリケーションの数値の状態の破損またはシステム障害 (クラッシュ) 可能性があります。

MS-DOS アプリケーション

Windows NT とその後続タスクのインテル x には、3 つの定義済みの権限レベル (高、中、および低) があります86、インテルでの MS-DOS アプリケーションを実行します。 x には、3 つの定義済みの権限レベル (高、中、および低) がありますx86 プロセッサの仮想 8086 モードです。MS-DOS で同じように MS-DOS アプリケーションは、浮動小数点演算のハードウェアにアクセスできます。浮動小数点ハードウェアが存在しない場合は、エミュレーションが行われません。したがって、アプリケーションは独自のエミュレーションが必要です。

Windows NT RISC ベースのコンピューターにインテルの組み込みを使用してください。 x には、3 つの定義済みの権限レベル (高、中、および低) がありますx86 エミュレーション コードです。Windows NT 3.5 には Windows NT 3.51 には 80286 と 80287 のエミュレーターが含まれます。Windows NT4.0 には、i486 のエミュレーターが含まれています。インテルの浮動小数点コプロセッサが存在する場合は、常に MS-DOS アプリケーションを実行します。

POSIX アプリケーション

Win32 アプリケーションでは、POSIX アプリケーションは完全な浮動小数点サポート常になれるように存在しています。

POSIX 標準で浮動小数点を有効にする方法が定義されていません例外。したがって、浮動小数点の例外を使用する POSIX アプリケーションする必要があります。システム固有の機能に依存しています。Microsoft Visual C でコンパイルする POSIX アプリケーションを使用して例外を浮動小数点で有効にできます、 _controlfp 関数です。浮動小数点例外 SIGFPE が、キャッチすることができますまたは、以上を行うには、アプリケーションを必要とする場合は、例外をキャッチ、 fpieee_flt 関数です。

OS/2 アプリケーション

このサブシステムで浮動小数点サポートと一致するの OS/2: フローティングの場合-ポイント ハードウェア、OS/2 が独自に提供する必要がありますインストールされていませんエミュレーション。インテルでは、os/2 サブシステムがサポートされて x には、3 つの定義済みの権限レベル (高、中、および低) があります86 のバージョンWindows NT とその後続タスク。

Windows 95、Windows 98、Windows 98 Second Edition、および Windows Me

Win32 アプリケーション

Windows 95 Windows Me のプラットフォームから、Windows NT および Windows 2000 のプラットフォームとしての Win32 アプリケーションでの同じ浮動小数点サポートが提供します。

Win16 アプリケーション

通常、Win16 アプリケーションをコンパイルにフィックス アップのレコードを含むように、浮動小数点命令とへの呼び出しが含まれているオブジェクト コード16 ビット浮動小数点エミュレーター WIN87EM。コンピューターのプロセッサが浮動小数点命令をサポートしている場合、または、コプロセッサが存在する場合は、ローダーが、浮動小数点命令はフィックス アップを解決して実行されます。浮動小数点演算ハードウェアが検出されない場合は、ローダー、フィックス アップ WIN87EM はへの呼び出しを解決して、エミュレーターが実行されます。

WIN87EM してアプリケーションを実行する浮動小数点命令が遮断されることはないです。だけが明示的に呼び出されたときを実行します。そのため、エミュレーションでは、実行可能ファイルにフィックス アップのレコードを配置するのには、リンカーがわかりますをサポートする Win16 アプリケーションをコンパイルします。

デバイス ドライバー

仮想デバイス ドライバー (Vxd) は、浮動小数点命令を使用することができますが、数値演算コプロセッサの仮想デバイス インターフェイスを使用して保存して浮動小数点コプロセッサの状態を復元する必要があります。VxD も浮動小数点例外の例外ハンドラーを登録しなければなりません。

MS-DOS アプリケーション

Windows Me のプラットフォームにより、Windows 95、インテルの MS-DOS アプリケーションを実行します。 x には、3 つの定義済みの権限レベル (高、中、および低) がありますx86 プロセッサの仮想 8086 モードです。MS-DOS で同じように MS-DOS アプリケーションは、浮動小数点演算のハードウェアにアクセスできます。浮動小数点ハードウェアが存在しない場合は、エミュレーションが行われません。したがって、アプリケーションは独自のエミュレーションは、MS-DOS アプリケーションの実行時ライブラリによって通常実行されるように入力してください。

この資料に記載されているサードパーティ製品は、マイクロソフトの会社によって製造されています。マイクロソフト、黙示またはそれ以外の場合のパフォーマンスや信頼性これらの製品について負わない。

プロパティ

文書番号: 102555 - 最終更新日: 2014年3月1日 - リビジョン: 4.0
キーワード:?
kbnosurvey kbarchive kbinfo kbprogramming kbkernbase kbfloatpoint kbmt KB102555 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:102555
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

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