16.02.2013 Aufrufe

24531904_j

24531904_j

24531904_j

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

MOV—Move ( 続き )<br />

デスティネーション ・ オペランドがセグメン ト ・ レジスタ (DS、 ES、 FS、 GS、 または<br />

SS) である場合は、 ソ ース ・ オペラン ド は有効なセグメン ト ・ セレ ク タでなければならな<br />

い。 保護モードでは、 セグメン ト ・セレクタをセグメント ・ レジスタに転送すると、 そ<br />

のセグメント ・ セレクタに関連するセグメン ト ・ディスク リプタ情報が自動的にセグメ<br />

ント ・レジスタの見えない( シャ ドー ) 部分に ロ ー ド さ れる。 こ の情報を ロ ー ド している<br />

間は、 セグメン ト ・ セレ ク タおよびセグメン ト ・ デ ィ ス ク リ プタ情報が有効になる ( 下記<br />

の 「操作」 のアルゴリズムを参照)。 セグメント ・ディスクリプタ・データは、 指定した<br />

セグメン ト ・ セレ ク タの GDT エン ト リ または LDT エン ト リ から得られる。<br />

NULL のセグメン ト ・ セレ ク タ ( 値 0000 ~ 0003) を保護例外を発生させずに DS、 ES、<br />

FS、 GS レジスタにロードすることができる。 ただし、 その対応するセグメント ・ レジ<br />

スタが NULL 値をロ ー ド されているセグメン ト をその後に参照し よ う と する と、 一般保<br />

護例外 (#GP) が発生し、 メ モ リ 参照は行われない。<br />

IA-32 システム環境では、MOV 命令を使用して SS レジスタをロードすると、次の命令<br />

の実行が完了するまで、すべての外部割り込みおよびトラップが禁止される。Itanium<br />

ベース・システム環境では、SS レジスタへの MOV を実行すると、命令の完了後に<br />

IA-32_Intercept(SystemFlag) トラップが発生する。 この操作によって、 割り込みが発生<br />

する前に、 次の命令(MOV ESP, スタック ・ ポインタ値) で ESP レジスタにスタック ・ ポ<br />

インタをロー ドできる。 LSS 命令に よ っ て、 SS レジスタと ESP レジスタをより効率的に<br />

ロードできる。<br />

32 ビッ ト ・モードで、 セグメント ・レジスタと 32 ビッ ト汎用レジスタの間でデータを<br />

転送す る と き、 Pentium Pro プロセッサでは、 16 ビッ ト ・オペランド ・サイズ・プリ<br />

フ ィ ッ ク ス を使用す る必要はない。 ただし、 一部のアセン ブ ラ は、 こ のプ リ フ ィ ッ ク ス<br />

を必要 と してい る。 プ ロ セ ッ サは、 汎用レ ジ ス タ の最下位 16 ビットがデスティネーショ<br />

ン・オペランドまたはソース・オペランドであると見なす。 セグメント ・セレクタから<br />

32 ビッ ト ・レジスタに値を転送する場合、 プロセッサは、 32 ビット ・レジスタの上位2<br />

バイ ト を 0 で埋める。<br />

操作<br />

DEST ← SRC;<br />

保護モ ー ド の間にセグ メ ン ト ・ レ ジ ス タ を ロ ー ド する と 、 以下の リ ス ト で説明してい る<br />

よ う に特殊なチ ェ ッ ク と処置が行われる。 これら のチェ ッ ク は、 セグメ ン ト ・ セレ ク タ<br />

お よ びそれが指しているセグメ ン ト ・ デ ィ ス ク リ プタ に対して行われる。<br />

IF SS is loaded;<br />

THEN<br />

IF segment selector is null<br />

THEN #GP(0);<br />

FI;<br />

IF segment selector index is outside descriptor table limits<br />

OR segment selector's RPL ≠ CPL<br />

OR segment is not a writable data segment<br />

OR DPL ≠ CPL<br />

THEN #GP(selector);<br />

FI;<br />

IF segment not marked present<br />

THEN #SS(selector);<br />

ELSE<br />

SS ← segment selector;<br />

SS ← segment descriptor;<br />

FI;<br />

FI;<br />

3:656 第 3 巻 : IA-32 基本命令リファレンス

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!