1

これはテストからの問題です。考えられる答えは次のとおりです。

(a) Debug interrupt is always caused by an error, and int 80h isn't.
(b) Only on int 80h the returning address is saved.
(c) int 80h is always caused by an error and debug interrupt isn't.
(d) None of the above.

私が肯定しているのは、(c) が間違っているということだけです。

両者の違いを明らかにできる人はいますか?

4

1 に答える 1

6

デバッグ割り込みは常にエラーによって発生し、int 80h はそうではありません

ほとんどの場合、デバッグ割り込みは意図的にコードに挿入されます。インライン アセンブリ、コード内の組み込み (__debugbreak など) を使用するか、デバッガーを使用して、プロセッサがステートメントの先頭に到達したときにデバッグ ブレークを呼び出すようにします。int 03h は、x86 および x64 プロセッサでエンコードされる方法によって強力に有効化されます。これは、1 バイト (CCh) を使用する命令であるため、デバッガーによる挿入が非常に簡単です。INTO はもう 1 つの変わり者で、残りは 2 バイトかかります。エラーとは関係がないので、いいえ。

int 80h でのみ戻りアドレスが保存されます

プロセッサはすべてのソフトウェア割り込みを同じ方法で処理します。割り込み番号は単に割り込みハンドラを選択するだけです。Int 03h はリターンアドレスもスタックに格納するので、いいえ。

int 80h は常にエラーによって発生し、デバッグ割り込みは発生しません。

int 80h が何をするかは、オペレーティング システムに完全に依存します。しかし、これはほぼ確実に Linux を指しており、int 80h を使用してカーネル モードに移行し、低レベルのオペレーティング システム関数を呼び出します。もちろん、それらはエラーではないので、いいえ。

(d) 上記のいずれでもない。

于 2013-06-30T15:16:06.167 に答える