GCCを使用して簡単なオペレーティングシステムを作成しようとしています。これにより、入力したディスプレイにテキストを表示できます。私はロードする必要があり、外部アセンブリ言語モジュールではなくインラインアセンブリを使用してできるようにするために、割り込みテーブルCを持っています。インラインアセンブリからLIDTを使用して割り込みベクタテーブルをロードする方法は?
私が探しているのは、Cポインタをインラインアセンブリに渡す方法です。
メモリオペランドを必要と私はインラインしようとしていた命令がLIDT次のとおりです。
は、グローバル記述子テーブルレジスタ(GDTR)または割り込みディスクリプタ・テーブル・レジスタ(IDTR)にソースオペランドの値をロードします。ソース・オペランドは、グローバル・ディスクリプタ・テーブル(GDT)または割り込みディスクリプタ・テーブル(IDT)のベース・アドレス(リニア・アドレス)とリミット(バイト・テーブルのサイズ)を含む6バイトのメモリ位置を指定します。オペランドサイズ属性が32ビットの場合、16ビットの制限(6バイトのデータオペランドの下位2バイト)と32ビットのベースアドレス(データオペランドの上位4バイト)がレジスタにロードされます。 operand-size属性が16ビットの場合、16ビットの制限(下位2バイト)と24ビットのベースアドレス(3番目、4番目、5番目のバイト)がロードされます。ここでは、オペランドの上位バイトは使用されず、GDTRまたはIDTRのベースアドレスの上位バイトは0で埋められます。
これは保護されたモードで、6バイトのIDTレコード(ベースアドレスと制限を持っています)を含むメモリ位置からIDTRを読み込むために 'lidt'命令を使用するとしますか? –