Intel 8086 Family Architecture

Registers

General Purpose Registers

汎用的に使用されるレジスタ。

汎用 Registerの構成(EAX Registers)
汎用 Registerの構成(EAX Registers)
汎用 Register一覧
32bit 16bit 8bit(High) 8bit(low) 機能
EAXAXAHALAccumulator
EBXBXBHBLBase
ECXCXCHCLCounter
EDXDXDHDLData

Segment Registers

Segmentを指し示すレジスタ。

Segment Registerの構成(CS Registers)
Segment Registerの構成(CS Registers)
Segment Registerの機能
16bit 機能
CSCode Segment 実行コード領域のセグメントを示す
DSData Segment データ領域セグメントを示す
SSStack Segment スタック領域のセグメントを示す
ESExtra Segment それ以外のセグメントを示す
FS汎用? (386以降から登場)
GS汎用? (386以降から登場)

Pointer Registers

インデックス レジスター

Pointer Registerの構成(ESI Registers)
Pointer Registerの構成(ESI Registers)
Pointer Registerの機能
32bit 16bit 機能
ESISISource Index
EDIDIDestination Index
EIPIPInstruction Pointer

Stack Registers

スタック レジスタ

Stack Registerの構成(ESP Registers)
Stack Registerの構成(ESP Registers)
Stack Registerの機能
32bit 16bit 機能
ESPSPStack Pointer
EBPBPBase Pointer

Status Registers

命令実行の結果などがセットされるレジスタ。

Status Registerの構成(EFLAGS Registers)
Status Registerの構成(EFLAGS Registers)
Status Registerの機能
bit FLAG 意味 詳細
0CFCarry Flag 算術演算の結果、carry(桁上がり)または、borrow(桁下がり)が発生した時、 1がセットされる。
符合無し演算のoverflowの発生を示す。
1-1固定 
2PFParity Flag 算術演算の結果が、偶数ならば1がセットされる。
3-0固定 
4AFAuxiliary Flag 下位4bitから上位4bitへの桁上げが生じた時、1がセットされる。
2進化10進数演算を行う場合等に用いられる。
5-0固定 
6ZFZero Flag 演算結果が0の時、1がセットされる。
7SFSign Flag 演算結果のMSB(最上位bit)が1の時、1がセットされる。
8TFTrap Flag Debug用フラグ、1の時Single Step Modeが有効になり、 0の時Single Step Modeが無効となる。
9IFInterrupt Flag マスク可能HW割込み制御フラグ。1のとき割込み許可となり0の時割り込み禁止
10DFDirection Flag ストリング命令の、参照方向を制御するフラグ。 1の時は、マイナス方向を参照し、0の時は、プラス方向を参照する。
11OFOverflow flag 計算結果がOverflowおよびunderflowした時、1がセットされる。
12-13IOPLI/O Privilege Level(286以降) 現在実行している、プログラムのI/O特権レベルを表す。
14NTNested Task Flag(286以降) プロセッサは、CALL命令、割り込み、または例外によって 開始されたタスクへのコール時にこのフラグをセットする。
15-0固定 
16RFResume Flag(386以降) 命令ブレークポイント条件に対するプロセッサの応答を制御する。 1の時は、命令ブレークポイントに対して一時的にデバッグ例外 が生成されないようになる。
17VMVirtual Mode Flag (386以降) 仮想8086モードを制御する。
VM=1の時は、仮想8086モードとなる。
VM=0の時は、プロテクトモードとなる。
18ACAlignment Check このフラグとCR0 レジスタのAM フラグがセットされると、 メモリ参照のアライメント・チェックがイネーブルになる。 ACフラグまたはAMフラグ、あるいはその両方がクリアされると、 アライメント・チェックがディスエーブルになる。 奇数バイト・アドレスにあるワードや4 の整数倍でないアドレス にあるダブルワードなどアライメントの合っていないオペランド が参照されると、アライメント・チェック例外が発生する。
19VIFVirtual Interrupt Flag よくわからん
20VIPVirtual Interrupt Pending よくわからん
21IDID このフラグをセットまたはクリアすることができるプログラムまた はプロシージャの機能は、CPUID 命令をサポートする。
22-31-Reserved(0固定) 

Control Registers

cr0 Register

プロセッサの動作モードと状態を制御するシステム制御フラグで構成される。

CR0 Registerの構成
CR0 Registerの構成
cr0 Registerの機能
bit FLAG 意味 詳細
0PEProtect Enable PE=1の時、保護モードがEnableになる。
PE=0の時、実アドレスモードがEnableになる。
1MPMonitor Coprocesser WAIT(またはFWAIT)命令とTSフラグ(CR0のビット3)との相互作用を制御する。
MP=1かつTS=1の時、wait命令はデバイス使用不可能例外(#NM)を生成する。
MP=0の場合、WAIT 命令はTSフラグの設定を無視する。
2EMEmulation EM=1の時は、プロセッサは内部または外部のFPUを持っていないことを表す。
EM=0の時は、FPUが存在することを表す。
EM=1の時、浮動小数点命令を実行実行すると、デバイス使用不可能例外(#NM) が発生する。
3TSTask Switch FPUが新しいタスクによって実際にアクセスされるまで、 Task Switch時のFPUコンテキストのセーブを遅延させることができる。
TS=1の場合、浮動小数点命令の実行前に、デバイス使用不可能例外(#NM) が発生する。
TS=1かつMP=1の場合、浮動小数点命令またはWAIT/FWAIT命令の実行前に、#NM 例外が発生する。
4ETExtension Type? P6ファミリ・プロセッサとPentiumプロセッサではReservedとなる。 (P6 ファミリ・プロセッサでは、このフラグは1 に固定されている。)
386プロセッサと486プロセッサでは、このフラグがセットされていると 387DX数値演算コプロセッサ命令のサポートを示す。
5NENumerical Error? NE=1の時は、FPUエラーをレポートするための標準メカニズムがEnableになる。
NE=0の時は、PC スタイルのFPUエラー・レポート・メカニズムがEnableになる。
16WPWrite Protect WP=1の時は、スーパバイザ・レベルのプロシージャがユーザ・レベル読み取り 専用ページに書き込むことを禁止する。
WP=0の時は、スーパバイザ・レベルのプロシージャがユーザ・レベル読み取り専用 ページに書き込むことを許可する。
このフラグは、UNIX などのオペレーティング・システムによって使用され、 コピー・オン・ライト方式による新しいプロセスを生成する場合に (フォークする)設計を容易にする。
18AMAlignment Mask AW=1の時は、自動Alignment CheckがEnable。
AW=0の時は、Alignment Checkがdisable。
Alignment Checkは、AM=0・AC=0(EFLAGS)・CPL=3であり、 プロセッサが保護モードまたは仮想8086 モードで動作しているときだけ に実行される。
29NWNow Write through NWフラグとCDフラグがクリアされると、キャッシュをヒットする書き込みに対して ライトバック(PentiumRプロセッサとP6ファミリ・プロセッサの場合)または ライトスルー(Intel486. プロセッサの場合)がEnableになり、無効化サイクルがEnableになる。
30CDCache Disable CD=0・NW=0の時、プロセッサの内部(および外部)キャッシュにある物理メモリ全体のメモリ位 置のキャッシングがEnableになる。
31PGPaging PG=1の時、PagingがEnableになる。
PG=0の時、PagingがDisableになる。
PagingがDisableになっていると、すべてのリニア・アドレスは物理アドレスとして扱われ る。PE=0の場合、PGフラグは効力を持たない。

cr1 Register

cr1 Registersは全てReserved。

cr2 Register

cr2には、ページ・フォルトを発生させた命令が、アクセスしようとしたメモリのリニア・アドレスが設定される。

CR2 Registerの構成
CR2 Registerの構成

cr3 Register

ページ・ディレクトリのベースの物理アドレスと2つのフラグ(PCD とPWT)が入る。

CR3 Registerの構成
CR3 Registerの構成
cr3 Registerの機能
bit FLAG 意味 詳細
3PEPage Write Through 現在のページ・ディレクトリのライトスルーまたは ライトバック・キャッシング・ポリシーを制御する。
PWT=1の時、ライトスルー・キャッシングがEnableになる。
PWT=0の時、ライトバック・キャッシングがEnableになる。
このフラグは、内部キャッシュ(存在しているときは、L1とL2の両方)だけに影響を与える。 ページングが使用されていない(PG=0[レジスタCR0])かまたはキャッシュ・ディスエーブルフラグ (CD=1[レジスタCR0])の場合、プロセッサはこのフラグを無視する。
4PCDPage level Cache Disable 現在のページ・ディレクトリのキャッシングを制御する。
PCD=1の時、ページ・ディレクトリのキャッシングが抑制される。
PCD=0の時、ページ・ディレクトリをキャッシュすることができる。
このフラグは、プロセッサの内部キャッシュ(存在しているときには、L1およびL2の両方) だけに影響を与える。ページングが使用されていない(PG=0[レジスタCR0])または キャッシュ・ディスエーブル・フラグ(CD=1[レジスタCR0])の場合、 プロセッサはこのフラグを無視する。
12-31-Page Directory Base ページング機能をONにする前に、Page Directory Tableアドレスの上位20bitを セットする。

cr4 Register

アーキテクチャ上の各種の拡張機能を設定する。

CR4 Registerの構成
CR4 Registerの構成
cr4 Registerの機能
bit FLAG 意味 詳細
0VME仮想8086 モード拡張 VME=1の時、仮想8086モードでの割り込み/例外処理拡張がEnable。
VME=0の時、拡張がDisable。
1PVI保護モード仮想割り込み PVI=1の時、保護モードで仮想割り込みフラグ(VIF)のハードウェア・サポートがEnableになる。 PVI=0の時、保護モードでVIF フラグがDisableになる。
2TSDタイムスタンプ・ディスエーブル TSD=1の時、RDTSC命令が特権レベル0で実行しているプロシージャだけで実行されるように限定される。
TSD=0の時、RDTSC命令がどの特権レベルでも実行できるようになる。
3DEデバッグ拡張 DE=1の時、デバッグ・レジスタDR4 DR5への参照によって未定義オペコード(#UD)例外が生成される。
DE=0の時、早期のインテル・アーキテクチャ・プロセッサで実行するように作成されている ソフトウェアとの互換性を保つ、
4PSEページ・サイズ拡張 PSE=1の時、4Mバイト・ページがEnableになる。
PSE=0の時、4Kバイト・ページに制限される。
5PAE物理アドレス拡張 PAE=1の時、36ビット物理アドレスを参照するページング・メカニズムがEnableになる。
PAE=0の時、物理アドレスは32 ビットに限定される。
6MCEマシン・チェック・イネーブル MCE=1の時、マシン・チェック例外がEnableになる。 MCE=0の時、マシン・チェック例外がDisableになる。
7PGEページ・グローバル・イネーブル PGE=1の時、グローバル・ページ機能がEnableになる。
PGE=0の時、グローバル・ページ機能がDisableになる。
(P6 ファミリ・プロセッサで導入された。)
8PCE性能モニタリング・カウンタ・イネーブル PCE=1の時、任意の保護レベルで実行しているプログラムまたはプロシージャに対し てRDPMC 命令を実行することができる。
PCE=0の時、クリアされていると、RDPMC 命令は保護レベル0でしか実行することはできない。
9OSFXSROSによるFXSAVE/FXRSTORのサポート CPU とOS がいずれもコンテキスト・スイッチ時のFXSAVE/FXRSTOR の使用をサポー トしている場合は、オペレーティング・システムはこのビットをセットする。
10OSXNNEXCPTOSによるFMaskされていない例外のサポート オペレーティング・システムが、マスクされていないSIMD 浮動小数点例外をサ ポートしている場合は、オペレーティング・システムはこのビットをセットする。
Last modified: Thu May 22 18:45:43 2008 JST