4

これらは「ProgrammerVisible」 x86-64レジスタです。

代替テキスト
(ソース:usenix.org

見えないレジスタはどうですか?ちょうど今、MMUレジスタ、割り込み記述子テーブル(IDT)がこれらの非表示レジスタを使用していることを知りました。私はこれらのことを難しい方法で学んでいます。全体像を一度に知ることができるリソース(本/ドキュメントなど)はありますか?

私はプログラマーの目に見えるレジスターを知っており、それらを使ったプログラミングに慣れています。見えないレジスタとその機能について知りたいだけです。全体像を把握したい。この情報はどこで入手できますか?

編集:

全体像を把握したい。この情報はどこで入手できますか?

これらは、これらすべての低レベルの詳細を理解するのに役立った2冊の本です。

  1. コンピュータの組織と設計の基礎〜Sivarama P. Dandamudi-1版(2003
  2. コンピューターの構成と設計:ハードウェア/ソフトウェアインターフェイス、第4版、〜David A. Patterson、John L. Hennessy
4

2 に答える 2

3

IDTは割り込み記述子テーブルであり、抽象的な観点からこのようなものが含まれています。最初の18個の割り込みはプロセッサによって予約され、次の18個は将来チップのアーキテクチャを保証するためにIntelによって予約されます...

割り込みハンドラ
   0divide_by_zero_handler
   1 debug_handler
   ....。
   13 general_exception_handler
   14 page_fault_handler
   ....。
   18 machine_check_handler

このコンテキストでは、ハンドラーはおもちゃのカーネルの一部であり、各ハンドラーは、ユーザーランドコードが読み込まれる前の起動時に設定されます。(BIOSはリアルモードコードとも呼ばれる16ビットコードです)、カーネルはハンドラーをセットアップし、32ビットプロテクトモードに切り替えます。割り込みのいずれかが発行されると、割り込み番号に応じて適切なハンドラーが実行されます。たとえば、割り込み14が生成された場合、カーネルはを実行しpage_fault_handler、ページがダーティでディスク上にあるかどうかを確認してから、そのページをメモリにロードし、アドレスを修正してダーティビットをクリアし、IRET割り込みリターン命令を実行して続行します、フラグをクリアする...

これは、IDTがどのように機能するかについての抽象的なビューです...バックグラウンドで行われているより複雑なことがあります...ページング/フラット/保護/仮想モードアドレス指定スキームなどのアーキテクチャとメモリ管理のタイプによって異なります...

インテルのプログラミングの優れた完全なビューを提供するインテルのドキュメントをここでご覧ください...

編集: DOSの昔(16ビットコードであり、正確にメモリ保護されていませんでした)、割り込みハンドラーを独自のハンドラーに再ルーティングして、元のIDTをオーバーレイすることが可能でした(このような割り込みの例) 、getvect(...)および呼び出しを使用したキーボード割り込み(このコンテキストではBIOS割り込み)である割り込み9、setvect(...)一部(すべてのプロセッサ割り込みではなく、特にゼロで除算するためのIDT 0)を処理することもできます...これらのBIOS割り込みは外観はプロセッサ割り込みと非常に似ていて、共通の機能を共有していました。どちらも割り込みベクトルのテーブルを持っていました(当時は知られていました)。これが、BIOS割り込みがTSRのハンドラーに再ルーティングされた結果として、TSR(Terminate Stay Resident)プログラムがDOSで再入可能を維持できる方法でした...

于 2010-03-14T14:44:47.760 に答える
1

関心のある特定のプロセッサのプロセッサリファレンスマニュアルを調べる必要があります。これがItaniumプロセッサリファレンスマニュアルです。

于 2010-03-14T14:41:58.477 に答える