うプログラマの"見えない"レジスタ?
-
19-09-2019 - |
質問
これらの "プログラマが目まぐるしく移り変わる x86-64レジスタ:
(出典: usenix.org)
何に見えないレジスタ?このこMMUの登録、割り込み記述子テーブル(IDT)これらの見えないが登録する私が学習そのものです。あな資源(書籍/ドキュメンテーション/etcを保つことが私の絵は一回しか出来ないのですか?
知っているし、プログラマの見えるレジスタ-快適なプログラミングします。ていただきたいと思い知見えないレジスタとその機能.用していただきたいと思い、完了します。ジからダウンロードができます。
編集:
用していただきたいと思い、完了します。ジからダウンロードができます。
これらの図書く理解これらのすべての低レベル。
解決
IDTは、抽象的視野から、このようなものが含まれている割り込みディスクリプタ・テーブル、あり、最初の18回の割り込みがプロセッサによって予約されて、次の18チップのアーキテクチャを校正将来のためにインテルが予約されています...
Interrupt Handler 0 divide_by_zero_handler 1 debug_handler .. ... 13 general_exception_handler 14 page_fault_handler .. ... 18 machine_check_handler
このコンテキストでは、ハンドラはおもちゃのカーネルの一部であり、ハンドラの各々は、ユーザランドのコードの前にロードされ、起動時に設定されています。 、カーネルは、割り込みのいずれかが発行される場合、適切なハンドラは、割込み番号に応じて実行され、保護モードを32ビットに切り替わり、ハンドラを設定(BIOSは、リアルモードコード別名、16ビットコードです)。例えば、14が生成された割り込み、カーネルは、page_fault_handler
を実行するページが汚れているかどうかを確認し、ディスク上に存在する場合は、メモリにそのページをロードし、アドレスを修正し、ダーティビットをクリアし、IRET
割り込みリターン命令を実行しますフラグをクリアし、継続する....
これは、このようなアドレッシングスキームをページング/フラット/保護/仮想モードとして、メモリ管理のアーキテクチャと種類に応じて...舞台裏で起こって、より複雑なものがあります... IDTがどのように機能するかの抽象図です。 ..
与えこちらをご覧インテルのドキュメントインテルのプログラミングの優れかつ徹底的な眺め...
の編集を
バック(16ビットコードではなく良く、正確にメモリ保護された)DOSの昔では、それは、このような割り込み、割り込みの例については、オリジナルのIDTを重ねる再ルーティングするために、独自のハンドラへの割り込みハンドラ可能でした9割り込み(BIOSは、このコンテキストで割り込み)getvect(...)
とsetvect(...)
呼び出しを使用して、あなたはまた、(プロセッサ割り込みの全てではない、ゼロによる除算のために、特に、IDT 0)...これらのBIOS割り込みもののいくつかを扱うことができるキーボードでありますプロセッサの割り込みに外観が非常に類似していた、彼らは共通の特徴を共有し、両方(それは当時知られていたとして)、割り込みベクタのテーブルを持っていました。それはどのようにTSRプログラム(常駐型を終了)BIOSの結果は、TSRのハンドラに再ルーティングされた割り込みとしてDOSで再入を維持することができました...
他のヒント
あなたが興味のある特定のプロセッサ用のプロセッサのリファレンスマニュアルを勉強する必要があります。ここでは<のhref =「http://www3.intel.com/design/itanium/downloads/245320.htm」のrelです= "nofollowをnoreferrer">のItaniumプロセッサ・リファレンス・マニュアルでます。