9

x86 とリアルタイム システムについて勉強していますが、質問があります。

割り込みを処理するためにx86が従う手順はどれですか?

4

2 に答える 2

13

割り込みが発生すると、CPUは次のことを行います。

  • 現在のアドレス(命令ポインターの内容)をスタックにプッシュします。また、プロセッサフ​​ラグをプッシュします(他のすべてのプロセッサレジスタではありません)
  • 割り込み記述子テーブルで指定されているISR(割り込みサービスルーチン)のアドレスにジャンプします。

ISRは次のことを行う必要があります。

  • 変更する予定のレジスタをプッシュします(または、すべてのレジスタをプッシュします)
  • 割り込みを処理する
  • 割り込みを再度有効にする
  • プッシュしたレジスタをポップします
  • スタックからCPUフラグと命令ポインタ値をポップするIRET命令を使用します(したがって、割り込みが発生したときに実行されていたものに戻ります)。
于 2010-05-24T15:15:19.050 に答える
1

ここで、割り込み記述子テーブルから始めます。基本的に、割り込みが発生すると、フロー制御はこのテーブルにジャンプし、次にこのテーブルにあるものにジャンプします。また、割り込みが発生するとすぐにすべてのレジスタがプッシュされると思いますが、これに対処してから長い時間が経過しているため、100%確実ではありません。

于 2010-05-24T15:04:44.287 に答える