問題タブ [protected-mode]

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 投票する
2 に答える
1214 参照

operating-system - cでプロテクトモードで文字列を印刷する方法

私はOS Devingのスターターであり、ブートローダーとカーネルを作成することに成功しました.保護モードに正常にジャンプし、制御をカーネルに転送しました.単一の文字を書き込むことはできますが、文字列を印刷することはできません.これは私のprintString()です関数。

そしてマイプリントキャラクター機能はこちら

これは関数呼び出しです

助けてください私はOS開発のスターターです

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

interrupt - 保護モードでの BIOS 割り込み

isolinux (syslinux 4.5) をブートローダーとして使用し、0x200000 に編成されたマルチブート ヘッダーをカーネルにロードして、オペレーティング システム プロジェクトに取り組んでいます。

私が知っているように、カーネルはすでに 32 ビット保護モードになっています。私の質問: BIOS 割り込みにアクセスする簡単な方法はありますか? (基本的には 0x10 が欲しい:D)

ロード後、カーネルは独自の GDT および IDT エントリを設定し、さらに IRQ を再マップします。では、カーネルがロードされて VGA/SVGA モード (VBE 2.0 モード) が設定された直後にリアル モードにジャンプすることは可能ですか? 次に、カーネルを続行し、VBE 2.0 物理バッファー アドレスを使用して画面に書き込むプロテクト モードにジャンプしますか? はいの場合、どのように?いろいろ試しましたが、うまくいきませんでした:(

補足: インターネットでよく検索したところ、syslinux 1.x+ が _intcall API を提供していることがわかりました。100% 確信があるわけではありません。「syslinux 4.5\com32\lib\sys\initcall.c」を参照

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

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

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

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

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

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

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

assembly - CR0 で PE フラグを設定すると、保護モードがどのように有効になりますか?

マシンの電源を入れてからカーネルを実行するまでの過程を理解しようとしています。私が収集したことから、最終的にはページ ディレクトリとページ テーブルを使用し、セグメンテーションをオフにして従来型の仮想メモリ プランに切り替える場合でも、起動時に保護モードに切り替えると、より多くのアドレス指定可能なメモリにアクセスできるようになると便利です。 .

保護モードに切り替えるには、次の 3 つのことを行う必要があるようです。

  1. グローバル記述子テーブル (gdt) をセットアップし、次のlgdt命令を使用してロードします。
  2. 制御レジスタ CR0 の PE フラグ/ビットを有効 (値 1) に設定します。
  3. で走り幅跳びをするljmp

gdt で使用するために、セグメント レジスタと命令ポインタをインデックスとオフセットに変換するロジックについて疑問に思っています。このロジックはハードウェアによって達成されますか? もしそうなら、どのハードウェアのljmp一部で、なぜプロセスの一部が実行されるのですか? CR0 に PE フラグを設定して、プロテクト モードを有効にしないのはなぜljmpですか?

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

c++ - C++ - 32 ビット保護モード

私は、32 ビット C++ で記述される OS カーネルに取り組んでいます。C ++で32ビット保護モードを有効にする/ a20ゲートを有効にする方法を理解する必要があります。それで、それが可能かどうか教えてもらえますか?ありがとうございました。

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

protected-mode - 保護モードに入ると再起動します

オペレーティング システムの動作を理解するために、プロテクト モードなどをテストするための小さなテスト アプリケーションをロードする simpel ブートローダーを作成しました。しかし、保護モードに入ろうとすると、システムが再起動します。誰でもこの問題を解決できますか?

これはセクション0x2000の私のコードです