問題タブ [gdt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
606 参照

gdb - gs:0x14 の仮想アドレス

一部の C コードを gcc でコンパイルすると、次のアセンブリ結果が表示されることがよくあります。

これは単純な関数のプロローグです。+19 行から、スタック プロテクターの値が gs:0x14 から取得されていることがわかります。私の質問は、gdb で gs:0x14 の実際の仮想アドレスを知ることはできますか? gs セグメント セレクターの値は GDT からのオフセットを示しますが、gdb などのユーザー レベルのプロセスは GDT 情報にアクセスできません。gdb または他のデバッガーを使用して gs セグメントのベースアドレスを特定するにはどうすればよいですか? これは不可能ですか?

前もって感謝します。

0 投票する
0 に答える
362 参照

assembly - A20ゲートを設定するためのブートローダーコードを理解する

さて、私は 1Mb を超えるメモリへのアクセスに役立つコードを理解しようとしました。以下に必要なスニペットを書いています。わかったことを書きますが、それが正しいかどうかの確認が必要です (私は独学で OS を勉強しています)。前もって感謝します

最初にseta20.1、キーボード コントローラー (mkbc) からステータスを取得して、何かを書き込んでも問題ないかどうかを確認します。解放されたら0xd1、最終的に出力ポートを write に設定するバッファに書き込みます。

ではseta20.1、最初に mkbc がそれを読み取って出力ポートを設定したかどうかを確認しています。完了したら、0xdf最終的に 1Mb を超えるメモリにアクセスできるようにする A20 ゲートを設定するデータを送信します。

私の理解は正しいですか?そうでない場合は、正しい場所で私を修正してください。

0 投票する
1 に答える
2013 参照

assembly - x86 割り込みサービス ルーチンが一般保護違反を引き起こす

共通の isr スタブを次のように定義しています。

このコードは、次のように各割り込みから呼び出されます。

このコードは外部処理メソッドを適切に呼び出しますが、外部処理メソッドから戻った後に gpf 割り込みを引き起こします。

また、gdt をマップして、4G アドレス空間全体を 0 特権レベルのデータとコード記述子 (およびヌル記述子) でカバーするようにしました。どんな助けでも大歓迎です。

0 投票する
2 に答える
3251 参照

assembly - メモリのアドレス指定に関して、GDT の粒度ビットは正確に何を変更しますか?

このビットがゼロの場合、メモリはバイトごとにアドレス指定されますか? 1 の場合、メモリは 4Kb x 4Kb でアドレス指定されますか?

たとえば、このビットが 0 に設定されていて、メモリ位置 a000h をアドレス指定した場合、その位置のバイトをアドレス指定することになりますか? そして、次の場所 a001h をアドレス指定した場合、それはメモリ内の次のバイトになりますよね?

しかし、このビットが 1 の場合、4Kb チャンクをアドレス指定することになりますか?

では、a000h をアドレス指定すると 4Kb のチャンクが得られ、a001 はメモリ内の次の 4Kb になりますか?

0 投票する
1 に答える
3507 参照

assembly - gdb で gdtr および gdt 記述子を出力できますか?

目に見えない部分(x86)なので、gdbで「p/x $gdtr」と入力します....などですが、結果は「$6 =値を整数に変換できません」であり、gdbで「p/x $cs」と入力します唯一の結果はCSであり、目に見える部分だけです

ご回答有難うございます