少なくとも一部の割り込みハンドラをアセンブリ言語で記述する理由は何ですか?オペレーティングシステムの割り込みハンドラ
3
A
答えて
1
通常、アセンブリ内に割り込みルーチンの少なくとも一部を書き込むには、にはがあります。これは、多くの場合、割り込みによってプロセッサが特定のメモリ位置にベクトル化し、そのポイントからコードを実行し始めるためです。
あなたのプロセッサは、使用している上位レベルのルーチンの呼び出し規約に従っていない可能性がありますので、それを修正してより高いレベルの割り込み処理コードを呼び出し、割込みをクリアしてシステムを通常の実行に戻すためのより多くのアセンブリコード。例えば、Intelチップでは、割り込みから戻るためにプロセッサにiret
命令を実行させる必要があります。高水準言語で標準的な方法でこれを行う方法はありません。
2
割り込みハンドラは、常に非常に低レベルの環境で実行を開始します。プログラミング言語ですが、アセンブリには常にシステムライブラリと「ランタイム」と呼ばれるものが必要です。
たとえば、アセンブリ言語外のスタックポインタレジスタを操作することは容易ではありません。
さらに、ABIも障壁です。アプリケーションバイナリインターフェイスは、特にコンテキストの保存と復元のために、割り込み処理では複雑すぎます。
関連する問題
- 1. オペレーティングシステムの割り込み
- 2. 割り込みハンドラのコンテキストスイッチ
- 3. i2c割り込みハンドラstm32
- 4. CodeSourcery CS3割り込みハンドラのオーバーライド
- 5. GPIOピンlinux(arm)の割り込みハンドラ
- 6. 割り込みハンドラでargsを渡す
- 7. トリガーカーネル割り込みハンドラ:どのように?
- 8. Mspgccで割り込みハンドラ(ISR)を宣言するには?
- 9. オペレーティングシステムでは、システムコールと割り込みの違いは何ですか?
- 10. 割り込みハンドラがFIFOに書き込むことができます
- 11. Linuxの割り込みレイテンシー
- 12. どこに計算を入れますか?割り込みハンドラまたはメインループの内部? (埋め込みリアルタイムアプリケーション)
- 13. 他の割り込みベクタ内の割り込みベクタを呼び出す
- 14. 単純な割り込みハンドラ:request_irqがエラーコード-22を返します
- 15. 割り込みノコギリSAXパーサ?
- 16. libusb割り込み転送
- 17. タスクゲート、割り込みゲート、コールゲート
- 18. jQuery - 割り込みアニメーション?
- 19. イメージアップロード - ローカルホスト割り込み
- 20. 割り込みfadeTo関数
- 21. ハード割り込みとsoftirq
- 22. x86:割り込みハンドラループ
- 23. Hooking Int 09h割り込み
- 24. 割り込みとディスパッチャ
- 25. Arduinoシリアル割り込み
- 26. 共有割り込みラインの場合、使用する割り込みハンドラはどのようにして見つけられますか?
- 27. jquery割り込みJavascriptの読み込み中にjquery-1.7.1.min.js
- 28. 割り込みハンドラに入った後、ハードウェア上の割り込みを禁止することは強制的ですか?
- 29. オペレーティングシステムとCとプロセスメモリ割り当て
- 30. vb.net OpeningTextFileWriterの後のコード割り込み
お返事ありがとうございました。私は朝から答えに苦労していた。 – user1165418