5

Linuxx86_64サーバーでiret状態をシミュレートしたいと思います。私は3つの指示があることがわかりました

  1. iret:オペランドサイズ16
  2. iretd:オペランドサイズ32
  3. iretq:オペランドサイズ64

それらの違いと、どちらを使用するかはわかりません。誰かの助けに感謝します!

iretのシミュレーションについて別の質問があります。ご覧いただけますか?http://stackoverflow.com/questions/11756274/how-to-simulate-a-iret-on-linux-x86-64

4

1 に答える 1

13

このリンクから:

IRETは、IP(またはEIP)、CS、およびフラグをスタックからポップし、新しいCS:IPから実行を継続することにより、割り込み(ハードウェアまたはソフトウェア)から戻ります。

IRETWは、IP、CS、およびフラグをそれぞれ2バイトとしてポップし、合計で6バイトをスタックから取り出します。IRETDはEIPを4バイトとしてポップし、さらに4バイトをポップします。そのうちの上位2バイトは破棄され、下位2バイトはCSに送られ、フラグも4バイトとしてポップされ、スタックから12バイトが削除されます。

IRETは、その時点でのデフォルトのBITS設定に応じて、IRETWまたはIRETDの省略形です。

IRETQについても非常に似ています

于 2012-08-01T10:49:04.193 に答える