-1

クラスで教授は、「[アセンブリ]命令は、それが特権モードで実行されているかユーザーモードで実行されているかを認識しています。トラップが生成された場合、それはユーザーモードだからです」.

まず、トラップではなく、コマンドをユーザーモードで実行できないという特定のトラップであると想定しています。

次に、これは非常に効率が悪いようです。コマンド全体を実行して、トラップがあったかどうかを確認してください。フラグが設定されていないのはなぜですか?これは、うまくいかなかった場合、問題があることがわかっていると言っているようなものではありませんか? では、実際に確認する方法はありませんか?

4

1 に答える 1

0

これは、プラットフォーム (ARM、x86 など) によって異なります。私は主に ARM を使用しているため、回答は ARM 固有のものになる可能性がありますが、可能な限り一般的なものにしています。

通常、CPU は現在のプロセッサ モードを追跡し、各命令は実行中にチェックされます。これはソフトウェアではなくハードウェアで行われるため、効率的かどうかを心配する必要はありません (ハードウェア開発者に任せてください)。

十分な権限がないために命令がハードウェアによってトラップされた場合、CPU は通常、設定された場所で特権モードで実行を開始します。この設定場所は、通常カーネル内にあるトラップ ハンドラーです。トラップ ハンドラーは、トラップの原因に関する情報を収集し、適切に処理します。

于 2013-10-24T06:14:55.590 に答える