ロード/ストア
IDT は、LIDT アセンブリ命令を使用してロードされます。IDT 記述構造の場所が必要です。
オフセットは、テーブル自体の仮想アドレスです。サイズは、テーブルのサイズから 1 を引いたものです。この構造体は、SIDT 命令で再度メモリに格納できます。
ロード/ストア
IDT は、LIDT アセンブリ命令を使用してロードされます。IDT 記述構造の場所が必要です。
オフセットは、テーブル自体の仮想アドレスです。サイズは、テーブルのサイズから 1 を引いたものです。この構造体は、SIDT 命令で再度メモリに格納できます。
IDT 記述子は、 IDT エントリのロードと割り込みチェックに重要な情報を含む 6 バイト幅の構造体です。
interrupt に PIC 割り込みをマップし0x40
、IDT に0x3F
エントリ (サイズは0x1F8
) が含まれているとします。すべての割り込みエントリには 8 バイトがあるため、IF (割り込みフラグ) が設定されていて、IMR (割り込みマスク レジスタ、割り込みをフィルター処理するもの) が最初の割り込みでマスクを持っていない場合、PIC は起動したいことを通知します。割り込み。プロセッサが「OK、その番号は?」と尋ねると、PIC は「0x40」と答えます。プロセッサは割り込みエントリのオフセットを (テーブルの先頭から) 計算し、それを IDT 記述子構造の最初のワードと比較します。IDT ディスクリプタの値より大きい場合は、例外がスローされます (#GP だと思います)。
IDT 記述子構造のオフセットは、IDT の開始を指す 4 バイト アドレス (物理ではなく、ページ化された) です。割り込み番号から計算されたオフセットを加算すると、プロセッサは IDT エントリのアドレスにつながります。