IA-32
プロセッサ上で動作するプログラムやタスクには、命令の実行や、コード、データ、ならびにステート情報を格納するためのリソースが与えられる。これらのリソー ス(以下に簡単に説明する。図
3-1.
を参照)は、IA-32
プロセッサの基本実行環境を構 成する。この基本実行環境は、プロセッサ上で実行されるアプリケーション・プログ ラムとオペレーティング・システムまたはエグゼクティブによって共同で使用される。・
アドレス空間:IA-32
プロセッサ上で実行されるタスクまたはプログラムは、最大4G
バイト(2
32バイト)のリニアアドレス空間と、最大64G
バイト(2
36バイト)の物理アドレス空間をアドレス指定することができる。
4G
バイトを超えるアドレ ス空間のアドレス指定についての詳細は、3.3.3.
項「拡張された物理アドレス指定」を参照のこと。
・
基本プログラム実行レジスタ:8個の汎用レジスタ、6個のセグメント・レジスタ、EFLAGS
レジスタ、およびEIP(命令ポインタ)レジスタが、一連の汎用命令を実
行するための基本実行環境を構成する。これらの命令は、バイト整数、ワード整 数、ダブルワード整数の整数演算、プログラム・フロー制御、ビット・ストリン グとバイト・ストリングの処理、メモリのアドレス指定を実行する。これらのレ ジスタについての詳細は、3.4.節「基本プログラム実行レジスタ」を参照のこと。
・
x87 FPUレジスタ:8
個のx87 FPU
データレジスタ、x87 FPU
コントロール・レジ スタ、ステータス・レジスタ、x87 FPU
命令ポインタレジスタ、x87 FPU
オペラン ド(データ)ポインタ・レジスタ、x87 FPU
タグレジスタ、x87 FPU
オペコード・レジスタが、単精度
/
倍精度/
拡張倍精度の浮動小数点値、ワード/
ダブルワード/
クワッドワード整数、2進化10
進数(BCD)の演算用の実行環境となる。これら のレジスタについての詳細は、8.1.
節「x87 FPU
の実行環境」を参照のこと。・
MMX® テクノロジ・レジスタ:8
個のMMX
テクノロジ・レジスタは、64
ビット のパックドバイト/
ワード/
ダブルワード整数のSIMD
(Single Instruction, Multiple Data
)演算の実行をサポートする。これらのレジスタについての詳細は、9.2.
節「
MMX®
テクノロジのプログラミング環境」を参照のこと。・
XMMレジスタ:8個のXMM
データレジスタとMXCSR
レジスタは、128ビットの パックド単精度/
倍精度浮動小数点値のSIMD
演算と、128ビットのパックドバイ ト/
ワード/
ダブルワード/
クワッドワード整数のSIMD
演算をサポートする。これ らのレジスタについての詳細は、10.2.節「SSEのプログラミング環境」を参照の こと。IA-32基本実行環境
3
・
スタック:プロシージャまたはサブルーチンの呼び出しと、プロシージャまたは サブルーチン間でのパラメータの受け渡しをサポートするために、実行環境にス タックとスタック管理リソースが含まれている。スタック(図3-1.
には示されてい ない)はメモリ内に置かれる。スタックの構造についての詳細は、6.2.
節「スタッ ク」を参照のこと。図3-1. IA-32の基本実行環境 0 232 -1 8個の32ビット・
32ビット 32ビット
汎用レジスタ
セグメント・レジスタ
EFLAGSレジスタ
EIP(命令ポインタレジスタ)
アドレス空間*
*アドレス空間は、フラット 6個の
浮動小数点データ・
8個の64ビット・
MMXテクノロジ・レジスタ
XMMレジスタ 8個の128ビット・レジスタ
16ビット コントロール・レジスタ 16ビット ステータス・レジスタ
48ビット FPU命令ポインタレジスタ
48ビット FPUオペランド(データ)ポインタ・レジスタ FPUレジスタ
MMXテクノロジ・レジスタ
XMM レジスタ
32ビット MXCSRレジスタ
オペコード・レジスタ 基本プログラム実行レジスタ
16ビット タグレジスタ 8個の80ビット・
16ビット・
レジスタ レジスタ
レジスタ レジスタ
(11ビット)
レジスタ
モデルでもセグメント化 モデルでもかまわない。物理 アドレス拡張機構を使用して、
236-1の物理アドレス空間を アドレス指定することが できる。
IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 上巻:基本アーキテクチャ
3-4
IA-32
アーキテクチャは、基本実行環境のリソース以外に、システムレベル・アーキテクチャの一部として、次のようなシステムリソースを備えている。これらのリソー スは、オペレーティング・システムとシステム開発ソフトウェアを広範囲にわたって サポートする。
I/O
ポート以外のシステムリソースについての詳細は、『IA-32
インテル®アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル、下巻:
シ ステム・プログラミング・ガイド』を参照のこと。・
I/Oポート:IA-32
アーキテクチャは、入力/
出力(I/O
)ポートとの間のデータ転 送をサポートしている。本巻の第13
章「入出力」を参照のこと。・
コントロール・レジスタ:5個のコントロール・レジスタ(CR0~CR5)は、プロ
セッサの動作モードと、現在実行中のタスクの特性を指定する。『IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル、下巻』の「コント ロール・レジスタ」の項を参照のこと。・
メモリ管理レジスタ:GDTR
、IDTR
、タスクレジスタ、LDTR
は、プロテクト・モー ドのメモリ管理に使用されるデータ構造の位置を指定する。『IA-32
インテル®アー キテクチャ・ソフトウェア・デベロッパーズ・マニュアル、下巻』の第2
章の「メ モリ管理レジスタ」の項を参照のこと。・
デバッグレジスタ:デバッグレジスタ(DR0
~DR7
)は、プロセッサのデバッグ 動作の監視機能を制御する。『IA-32
インテル®アーキテクチャ・ソフトウェア・デ ベロッパーズ・マニュアル、下巻』の第15
章の「デバッグレジスタ」の項を参照 のこと。・
メモリタイプ範囲レジスタ(MTRR):MTRR を使用して、メモリタイプをメモリ の領域に割り当てることができる。『IA-32 インテル®アーキテクチャ・ソフトウェ
ア・デベロッパーズ・マニュアル、下巻』の第10
章の「メモリタイプ範囲レジス タ [MTRR]」の項を参照のこと。・
マシン固有レジスタ(MSR):プロセッサは、プロセッサのパフォーマンスの制御 とレポートに使用される各種のマシン固有レジスタを搭載している。事実上すべ てのMSR
は、システム関連機能を処理するためにあり、アプリケーション・プロ グラムはMSR
にアクセスできない。ただし、タイムスタンプ・カウンタは例外で ある。MSR
については、『IA-32
インテル®アーキテクチャ・ソフトウェア・デベ ロッパーズ・マニュアル、下巻』の付録B
「モデル固有レジスタ(MSR
)」を参照 のこと。・
マシン・チェック・レジスタ:マシン・チェック・レジスタは、ハードウェア(マ シン)エラーの検出と報告に使用される、一連のコントロール・レジスタ、ステー タス・レジスタ、エラー報告MSR
で構成される。『IA-32
インテル®アーキテク チャ・ソフトウェア・デベロッパーズ・マニュアル、下巻』の第14
章の「マシン チェックMSR
」の項を参照のこと。IA-32基本実行環境
3
・
パフォーマンス監視カウンタ:パフォーマンス監視カウンタは、監視対象となるプロ セッサ・パフォーマンス・イベントの中に含まれるものである。『IA-32
インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル、下巻』の第15
章の「パフォーマンス監視の概要」の項を参照のこと。
本章の後半では、メモリの構成とアドレス空間、基本プログラム実行レジスタ、アド レス指定モードについて説明する。図