[FIX] _controlfp() で Flush-to-Zero モードを設定できない

文書翻訳 文書翻訳
文書番号: 307611 - 対象製品
この記事は、以前は次の ID で公開されていました: JP307611
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
すべて展開する | すべて折りたたむ

現象

_controlfp( _DN_FLUSH, _MCW_DN) を呼び出しても、IA64 アプリケーションに対して flush-to-zero モードが有効になりません。

原因

この問題は、IA64 C Run-Time ライブラリの不具合が原因で発生しています。

解決方法

この問題を解決するには、Windows XP の最新の Service Pack を入手します。関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
322389 最新の Windows XP Service Pack を入手する方法
修正プログラム (英語版) の属性は次のとおりです。ただし、これより新しい修正プログラムがリリースされている可能性もあります。

元に戻す全体を表示する
日付 時刻 バージョン サイズ 名前 プラットフォーム
24-Sep-2001 10:58 7.0.2600.14 (xpclnt_qfe.010827-1804) 941,056 Msvcrt.dll IA64



この問題は、2001 年 8 月以降にリリースされた Platform Software Development Kit (SDK) (ビルド 9234) の Win64 ツールで IA64 アプリケーションが作成されている場合に発生します。この修正プログラムは、CRT .dll ファイルに対してのみ有効です。CRT スタティック ライブラリの修正プログラムは、今後の Platform SDK に組み込まれて提供される予定です。

状況

マイクロソフトでは、この問題をこの資料の冒頭に記載したマイクロソフト製品の問題として認識しています。 この問題は、Windows XP Service Pack 1 で修正済みです。

詳細

この問題を再現するには、以下のサンプル コードと 64 ビット C/C++ コンパイラおよびリンカ (これは Windows Platform SDK の 64 ビット ツールで使用できます) を使用して、64 ビット バイナリを作成します。_controlfp 関数の位置にブレークポイントを挿入し、(64 ビット用の) WinDbg デバッガでこのサンプル コードを実行します。_controlfp 関数が実行される前後で "fpsr" レジスタの値を調べます。_controlfp が呼び出された後、6 番目の最下位ビット (0 ベース) が設定されていないことを確認してください。この修正プログラムをインストールすると、このビットが設定されるようになります。
#include <stdio.h>
#include <float.h>

int main( int argc, char ** argv)
{
  printf( "Before calling _controlfp()\n");

  _controlfp( _DN_FLUSH, _MCW_DN);

  printf( "After calling _controlfp()\n");
}

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 307611 (最終更新日 2002-09-05) をもとに作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 307611 - 最終更新日: 2014年2月24日 - リビジョン: 4.3
この資料は以下の製品について記述したものです。
  • Microsoft Windows XP Professional x64 Edition
  • The C Run-Time (CRT)
キーワード:?
kbnosurvey kbarchive kbbug kbfix kbgrpdsvc kboswin2000fix kbwinxpsp1fix kbhotfixserver KB307611
"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