トラップフラグ= 1を設定したいが、ポップアルゴリズムを使用しない。私はそれが可能であることを知っていますが、私はそれを理解することができません。ポップ命令を使用せずにトラップフラグを設定する方法
1
A
答えて
1
FLAGS
は、割り込みが発生したときにスタックにプッシュされ、IRET
によってスタックからポップされます。
42h
は、いくつかはそうされていない割り込みベクタである
handler:
push bp
mov bp, sp
or word ptr [bp+6], 100h
pop bp
iret
set_trap_flag:
push 0
pop es
mov [es:42h*4], offset handler
mov [es:42h*4+2], segment handler
int 42h
:あなたはまだPUSHF
許可されているのであれば、あなたはPUSHF
が許可されていない場合は、割り込みハンドラをインストールすることができ
pushf
pop ax
or ax, 100h
push ax
call far do_iret
...
do_iret:
iret
ような何かを行うことができます中古。
(注:コードはテストされていないため、構文エラーやバグがある可能性があります)
+0
あなたの答えには複数の問題があります! __(1)__ TFを設定するために間違ったマスクを使用しています。 __(2)__ IVTでは、セグメントの前にオフセットがあります。 – Fifoernik
+0
@Fifoernik:ありがとう、修正済み。とにかく、私は本当に答えが何よりも疑似コードであることを意味しましたが、とにかく感謝しています。 –
関連する問題
- 1. 擬似命令を使用せずにメモリアドレスをロードする方法は?
- 2. ソースからのテンソルフローをインストールせずにSSE4.1命令を使用するには?
- 3. web.xmlを使用せずにJersey JSPTemplatePathを設定する方法
- 4. SVML命令の使用方法
- 5. 角2命令でtemplateUrlを使用する方法
- 6. GCCでthumb-2命令を使用する方法
- 7. キャンバスレストパイのカールを使用してPUT命令を使用する方法
- 8. SSEプリフェッチ命令サイズを決定する方法は?
- 9. 使い方* LLVM ::命令:: user_back()
- 10. PLD命令の使用
- 11. ColdFusion 10 REST API:RestSetResponse()を使用せずにステータスコード201を設定する方法
- 12. Cocoa Matrixを使用せずにラジオボタンの状態を設定する方法
- 13. app.configを使用せずに.NET 4でwebserviceを設定する方法
- 14. CPUレジスタを含む命令をメモリ命令に変換する
- 15. 与えられた命令の次の即時命令を得る方法は?
- 16. アクセサリー関数呼び出しの代わりにユーザースタック用のシングル命令プッシュ/ポップ?
- 17. スタックスマッシングを使用して命令をスキップ
- 18. コンパイラがプッシュ/ポップ命令のペアを生成するのはなぜですか?
- 19. パスを指定せずにshutil.rmtreeを使用する方法
- 20. ヘルパーを使用せずにアクションを指定する方法
- 21. JavaScript:Object.definePropertyを使用せずに非エニュメラブルメソッドを定義する方法
- 22. C64x + GMPY命令を使用してCRC32を計算する方法は?
- 23. RDTSCPと命令命令
- 24. AVMutableVideoComposition命令を設定すると、ハンドラは呼び出されません。
- 25. .NETCore2コントローラにAuthorize属性を設定せずにユーザーを設定する方法
- 26. LLVM IRBuilder:特定の命令の後に挿入ポイントを設定する
- 27. イベントを発生させずにcheckbox.isCheckedを設定する方法
- 28. フレームを設定せずにframe.widthを取得する方法は?
- 29. 変換命令を使わずに整数にIEEE doubleを掛ける方法は?
- 30. ALTを使用せずにボタンニーモニックキーイベントを設定する
なぜPOPFを避けたいですか?これはちょうどパズルか、いくつかの特定の制約がありますか?つまり、IRETを乱用してスタックからフラグをロードすることもできますが、これは不正行為のようです。 –
それはパズルです、私は答えを得ました、それはLAHFとSAHFの指示を使用しています。 – Clarskon
私は 'SAHF'について考えましたが、うまくいきません。 FLAGの下位バイト、すなわちビット0-7にAHをロードする。トラップフラグはビット8で、 'SAHF'によっては触られません。 –