16.02.2013 Aufrufe

24531904_j

24531904_j

24531904_j

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

PUSH—Push Word or Doubleword onto the Stack<br />

オペコード 命令 説明<br />

FF /6 PUSH r/m16 r/m16 をプッシュする。<br />

FF /6 PUSH r/m32 r/m32 をプッシュする。<br />

50+rw PUSH r16 r16 をプッシュする。<br />

50+rd PUSH r32 r32 をプッシュする。<br />

6A PUSH imm8 imm8 をプッシュする。<br />

68 PUSH imm16 imm16 をプッシュする。<br />

68 PUSH imm32 imm32 をプッシュする。<br />

0E PUSH CS CS をプッシュする。<br />

16 PUSH SS SS をプッシュする。<br />

1E PUSH DS DS をプッシュする。<br />

06 PUSH ES ES をプッシュする。<br />

0F A0 PUSH FS FS をプッシュする。<br />

0F A8 PUSH GS GS をプッシュする。<br />

説明<br />

スタック ・ ポインタをデク リ メントし、 次にソース ・ オペランドをプロシージャ ・ ス<br />

タックのトップにストアする。 スタック ・セグメントの現在のアドレス・サイズ属性と、<br />

オペラン ド ・ サイズ属性によ って、 スタ ッ ク ・ ポインタをデク リ メン ト する量が決ま る<br />

( 下記の 「操作」 を参照 )。 例えば、 32 ビッ トのアドレス指定とオペランドが使用されて<br />

いる場合は、 ESP レジスタ ( スタック ・ ポインタ ) が 4 ずつデク リ メン ト される。 16<br />

ビッ トのアドレス指定とオペランドが使用されている場合は、 SP レジスタ (16 ビッ ト ・<br />

アドレス指定のスタック ・ポインタ) が 2 ずつデク リ メン ト される。 スタ ッ クのア ド レ<br />

ス・サイズ属性が32 である と きに 16 ビット ・オペランドをプッシュすると、 スタッ<br />

ク・ポインタでアライメント不正が発生することがある( すなわち、 スタ ッ ク ・ ポイン<br />

タはダブルワー ド境界にアライメントが合っていない )。<br />

PUSH ESP 命令は、 命令が実行される前に ESP レジスタの値が存在していたようにその<br />

値をプ ッ シ ュする。 そのため、 ESP レジスタがオペランド ・アドレスの計算にベース ・<br />

レジスタとして使用されるメモリ ・ オペランドを、 PUSH 命令が使用する と 、 ESP レジ<br />

スタがデクリ メン ト される前に、 オペランドの実効アドレスが計算される。 実ア ド レス ・ モー ド では、 PUSH 命令が実行 さ れる と き に、 ESP レジスタまたは SP レジ<br />

スタが 1 であ る場合、 プ ロ セ ッ サは ス タ ッ ク ・ スペー スの不足に よ っ てシ ャ ッ ト ・ ダ ウ<br />

ンする。 こ の状態を示す例外は生成 さ れない。<br />

操作<br />

IF StackAddrSize = 32<br />

THEN<br />

IF OperandSize = 32<br />

THEN<br />

ESP ← ESP − 4;<br />

SS:ESP ← SRC; (* push doubleword *)<br />

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

ESP ← ESP − 2;<br />

SS:ESP ← SRC; (* push word *)<br />

FI;<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!