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.

POP—Pop a Value from the Stack ( 続き )<br />

IA-32 システム環境では、 POP SS 命令を実行する と、 次の命令の実行が完了する ま で、<br />

NMI 割 り 込みを含むすべての外部割 り 込みお よ び ト ラ ッ プが禁止 さ れる。 Itanium ベー<br />

ス・システム環境では、POP SS 命令を実行すると、命令の完了後に IA-32_Intercept<br />

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

命令 (MOV ESP, スタック ・ ポインタ値) で ESP レジスタにスタック ・ ポインタをロード<br />

するこ とができる。 ただし、 SS レジスタと ESP レジスタをロードするには、 LSS 命令を<br />

使用す る方が効率的である。<br />

こ の動作に よ っ て、 割 り 込みの間に無効なス タ ッ ク が発生しない よ う に、 POS SS 命令 と<br />

MOV ESP, EBP 命令をシ ー ケンシ ャ ルに実行で き る。 ただし、 SS レジスタと ESP レジス<br />

タをロードするときは、 LSS 命令を使用す る方が望 ま しい。<br />

メモリ内のデスティネーション・オペランドのアドレスを指定するベース・レジスタと<br />

して ESP レジスタを使用すると、 POP 命令は、 ESP レジスタをインク リメントした後に<br />

オペランドの実効アドレスを計算する。<br />

POP ESP 命令は、 スタックの古いト ップにあるデータをデスティネーションに書き込む<br />

前に、 スタ ッ ク ・ ポインタ (ESP) をインク リメントする。<br />

操作<br />

IF StackAddrSize = 32<br />

THEN<br />

IF OperandSize = 32<br />

THEN<br />

DEST ← SS:ESP; (* copy a doubleword *)<br />

ESP ← ESP + 4;<br />

ELSE (* OperandSize = 16*)<br />

DEST ← SS:ESP; (* copy a word *)<br />

ESP ← ESP + 2;<br />

FI;<br />

ELSE (* StackAddrSize = 16* )<br />

IF OperandSize = 16<br />

THEN<br />

DEST ← SS:SP; (* copy a word *)<br />

SP ← SP + 2;<br />

ELSE (* OperandSize = 32 *)<br />

DEST ← SS:SP; (* copy a doubleword *)<br />

SP ← SP + 4;<br />

FI;<br />

FI;<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 />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!