• 検索結果がありません。

IA-32 インテル ®

7.2.13. その他の命令

以下の命令は、アプリケーション・プログラマが利用できるその他の操作を実行する。

7.2.13.1. アドレス計算命令

LEA (load effective address)命令は、ソース・オペランドのメモリ内での実効アドレス(セグメント内 のオフセット)を計算し、その結果を汎用レジスタに入れる。この命令は、Pentium Proプロセッサ の任意のアドレス指定モードを解釈でき、必要な任意のインデックス操作やスケール操作を実行で きる。この命令は、ストリング命令を実行する前にESIレジスタまたはEDIレジスタを初期化する場 合や、XLAT命令の前にEBXレジスタを初期化する場合に特に便利である。

7.2.13.2. テーブル・ルックアップ命令

XLATおよびXLATB (table lookup)命令は、ALレジスタの内容を、メモリ内のトランスレーション・

テーブルから読み取った1バイトで置き換える。ALレジスタの初期値は、トランスレーション・テー ブルへの符号なしインデックスとして解釈される。このインデックスが、(トランスレーション・

テーブルのベース・アドレスを格納する)EBXレジスタの内容に加算されて、テーブル・エントリ のアドレスが計算される。これらの命令は、特定のアルファベットから他のアルファベットに文字 コードを変換するアプリケーションなどに使用される(例えば、ASCIIコードを使用して、テーブル 内でそれに相当するEBCDICコードを参照できる)。

7.2.13.3. プロセッサ識別命令

CPUID (processor identification)命令は、この命令の実行対象となるプロセッサに関する情報を返す。

7.2.13.4. ノー・オペレーション命令と未定義命令

NOP (no operation)命令は、EIPレジスタをインクリメントして次の命令を指定するが、それ以外には

何も影響を与えない。

UD2 (undefined)命令は、無効オペコード例外を生成する。インテルでは、この機能のために、この

命令のオペコードを予約している。この命令の目的は、ソフトウェア上で無効オペコード例外ハン ドラをテストできるようにすることである。

8

x87 FPU による

プログラミング

X87 FPU によるプログラミング

x87浮動小数点ユニット(FPU)は、画像処理、科学計算、工学計算、ビジネスなどのアプリケー ション向けに、高性能の浮動小数点処理を可能にする。x87 FPUは、浮動小数点、整数、およびパッ クドBCD整数の各データ型に対応し、2進浮動小数点演算に関するIEEE規格754に定義された浮動 小数点処理アルゴリズムと例外処理アーキテクチャをサポートしている。

本章では、x87 FPUの実行環境と命令セットについて説明する。また、x87 FPUに固有の例外処理に ついても説明する。x87 FPU命令と浮動小数点演算についての詳細は、以下の箇所を参照のこと。

x87 FPU命令についての詳細は、『IA-32 インテル®アーキテクチャ・ソフトウェア・デベロッ

パーズ・マニュアル、中巻』の第3章「命令セット・リファレンス」に記載されている。

x87 FPUの操作対象となる浮動小数点データ型、整数データ型、およびBCDデータ型について

は、4.2.2.項「浮動小数点データ型」、4.2.1.2.項「符号付き整数」、および4.7.節「BCDおよび パックドBCD整数」に記載されている。

x87 FPUが検出し、報告する浮動小数点例外の概要は、4.9.節「浮動小数点例外の概要」、4.9.1.

項「浮動小数点例外条件」、および4.9.2.項「浮動小数点例外の優先順位」に記載されている。

8 .1 . x87 F P U の実行環境

x87 FPUは、IA-32アーキテクチャ内の独立した実行環境である(図8-1.を参照)。この実行環境は、

8つのデータ・レジスタ(x87 FPUデータ・レジスタと呼ばれる)と、以下の汎用レジスタで構成される。

ステータス・レジスタ

コントロール・レジスタ

タグ・ワード・レジスタ

ラスト命令ポインタ・レジスタ

ラスト・データ(オペランド)ポインタ・レジスタ

オペコード・レジスタ

これらのレジスタについては、以下の各項で説明する。

x87 FPUは、プロセッサの通常の命令ストリーム内の命令を実行する。x87 FPUのステートは、(第7

章で説明した)基本実行環境のステートや、(第10章および第11章で個別に説明する)SSEおよび SSE2のステートに依存しない。ただし、x87 FPUとインテルMMXテクノロジはステートを共有す る。これは、MMXテクノロジ・レジスタは、x87 FPUデータ・レジスタを別名で定義したものだか らである。したがって、プログラマは、x87 FPU命令とMMX命令が混在するコードを作成する場合、

x87 FPUのステートとMMXのステートを明確に管理する必要がある(9.5.節「x87 FPUアーキテク

チャとの互換性」を参照)。