問題タブ [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 投票する
1 に答える
219 参照

assembly - エラーなしでジャンプできません

問題があります。最近は GDT、A20、プロテクト モードで遊んでいます。私はGDT用のこの簡単なコードを持っています:

ご覧のとおり、とてもシンプルです。これが私のA20の有効化です:

および第 2 段階のコードの一部:

一歩一歩進んでみました。GDT をレジスタに正常にロードし、A20 を有効にして保護モードに移行できます。しかし、しようとするとjmp 0x8:stage3、VirtualBoxからエラーが発生します:

(仮想マシンの状態は現在「Guru Meditation」です) どこに問題があるか知っている人はいますか? 機能させるにはどうすればよいですか?助けてください。

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

virtualization - タイプ1VMMおよびリング1

最近、私は仮想化について宿題をしています。私の質問は、VMMがどのように制御をゲストカーネルに転送し、そのコードをリング1で実行するかということです。

タイプ1VMM:これは従来のトラップアンドエミュレートVMMです。VMMはハードウェア上で直接実行され、リング0では「ホストオペレーティングシステム」として機能します。ゲストカーネルとゲストアプリケーションは、それぞれリング1とリング3でVMM上で実行されます。

  1. ゲストアプリケーションがシステムコールを行うと、リング0 VMMにトラップされます(CPUはこれを行うように設計されています)。

  2. 次に、VMMはこれがシステムコールであることを検出し、制御をゲストカーネルのsyscalハンドラーに転送して、リング1で実行します。

  3. 完了すると、ゲストカーネルはsyscall-returnを実行します。これは特権呼び出しであり、VMMに再びトラップされます。

  4. 次に、VMMはリング3のゲストユーザースペースに実際に戻ります(CPUもこれを行うように設計されています)。

私の質問はステップ2についてです。VMMはどのように制御をゲストカーネルに転送し、CPUを強制的に1回鳴らしますか?それ以降、ゲストカーネルコードはリング0で実行されるため、単純な「呼び出し」にすることはできません。これは、ある種の「syscall-return」または特別なコンテキストスイッチ命令である必要があります。

何か考えがありますか?ありがとうございました!

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

assembly - プロテクトモードにはるかにジャンプした後のGPF

ブートローダーとしてGRUBを使用して数週間作業した後、それらがどのように機能するかを理解できるように、自分でロールする必要があると判断しました。Brokenthornのチュートリアルをインターネット(現在はhttp://www.brokenthorn.com/Resources/OSDev9.html)で見つけました。プロテクトモードに切り替えようとすると、CPUハードウェアがファージャンプ後にリセットされます。私はbochsv。2.6を実行しています。

これは私の第2段階のブートローダーです(問題が解決すると思ったので、チュートリアルのほぼコピーですが、そうではありません)

私のGDT:

これは、このコードを試したときにbochsが返すエラーです。

この問題を解決するにはどうすればよいですか?

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

assembly - プロテクトモードを有効にしようとしたときのブートループ

基本的なブートローダーを作成しているのは、単純なCプログラムを作成し、それをハードディスク(ファイルシステムなし)に書き込んで実行できる環境があるところまでです。私がやりたいのはそれだけです。

これが私がこれまでにしたことです。

ステージ1:

  1. スタックレジスタとセグメントレジスタを設定する
  2. ビデオモードを640x480x8に変更します
  3. 次のセクターをメモリに読み込む
  4. はるかにそれにジャンプします

ステージ2:

  1. スタックとセグメントを再度設定します(これを再度行う必要がありますか?)
  2. GDTを設定します(この部分は私を混乱させます-TBH私はコピー/貼り付けするだけです)
  3. A20ゲートを有効にする
  4. プロテクトモードに入る

以前はプロテクトモードに正常に移行しましたが、何らかの理由で現在は移行できません。私が試してみると、Bochsはブートループに入りますが、私が知る限り、コードは機能していた古いコードと同じです。

A20とGDTを有効にするための呼び出しをコメントアウトしようとしましたが、ブートループを防ぐことはできませんでした。

私はここPasteBinにブートローダーコード全体を持っていますが、ここにもいくつかのものを入れます:


スタックの設定:

A20の有効化:

プロテクトモードに入る:

GDTコードは少し時間がかかり、自分で作成したわけではありません。しかし、私が言ったように、GDTをロードしなくても、後でブートループが妨げられることはありません。

ちなみに...私のブートローダー(これは私の最初です)についての一般的なコメントがあれば、遠慮なく言及してください。

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

java - InternetExplorerからsojamo/ProcessingにドラッグアンドドロップされたリンクからURLを渡す

sDropに付属している単純なDropBasics.pdeの例でさえ、IEアドレスバーから処理アプリケーションにアドレスをドロップするのに問題があります。問題はInternetExplorerのプロテクトモードに関係していると思います。アプリケーションでのドラッグアンドドロップ操作の許可に関する有益な記事がMSDNにありますが、処理アプリの単純な設定でさえも理解できません。たとえば、その記事のレジストリ設定の例は次のとおりです。

AppName = "contose.exe"

AppPath = "C:\%USERPROFILE%\ ApplicationData \ Contoso"

ポリシー=(DWORD)00000003

しかし、処理のために実行中のexeファイルはjavawであり、以下は機能していないようです

AppName = javaw.exe

AppPath = C:\ Windows \ SysWOW64

Policy = dword:00000003

IEアドレスバーからドロップされたリンクを受け入れるためにProcessingアプリケーションを登録することに成功した人はいますか?もしそうなら、それはどのように行われますか?

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

c# - IEのプロテクトモードがオンになっている間はイベントを取得できません

Winformを使用してIEアドオン(ツールバー)を作成していますが、マウスの位置とキーボードのキーを押す必要があります

また、IEが保護モードになっている間はWindowsイベントを取得しません。

でも動作してprotected override void OnLostFocus(EventArgs e)いません!

保護モードでIEからイベントを取得する方法はありますか?

プロテクトモードがなければ、すべてが正常に機能しています。

この記事を参照しないでください: プロテクトモードのInternetExplorerでの理解と作業

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

assembly - GDBリアルモードからプロテクトモードへ、オンザフライで分解

コンテキストスイッチを使用して、MBRコードの一部をデバッグしようとしています。私はデフォルトで16ビットのアセンブルされていない命令でasmレイアウトを設定しています。

プロテクトモードにコンテキストを作成すると、問題が発生します。この場合、asmウィンドウの命令は無意味になります(プロセッサはcの正しい命令を実行します)。

私はそのコマンドについて知っていset architecture i8086/i386ます。ただし、これらは仮想マシンに接続する前にのみ機能します。「オンザフライ」でアーキテクチャを変更することはできません。

注:コンテキストスイッチを前後に切り替えたいので、正しい手順を確認する必要があります。

全体として、アーキテクチャを切り替えて、asmウィンドウの指示を更新することは可能ですか?(奇妙なコマンドで?奇妙なworkaroud?)

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

protected-mode - GDT における DC ビットの役割は何ですか?

これは私のコードです:

gdt の dc ビット (アクセス バイトの 3 番目のビット) がゼロの場合、正しく動作します。1のときに機能しない理由を知りたいですか?

dc ビットはデータ セレクターの方向ビットであり、それが 0 の場合はセグメントが成長し、1 の場合はセグメントが成長することを知っています。しかし、成長と成長が正確に何を意味するのかわかりません。スタックを使用したいときは、成長して成長することを意味します.( ESP++ および ESP-- )

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

c# - 一部のコンピューターで仮想化パスを使用する一時ディレクトリ

私のSilverlightアプリケーションでは、通常のSaveFileDialogを使用して、ユーザーにファイルの保存を促しています。

問題は、一部のWindows 7コンピューターで、ユーザーが保護モードでIEを使用し、たとえばデスクトップに保存しようとすると、保存のパスが次のようになることです。

Windowsで通常のパスの代わりにこのパスが使用されることを示すフラグまたは値をどこで見つけることができるか誰かが知っていますか?

ありがとうございました

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

assembly - GDT の内容を確認する方法

逆アセンブルされた dll を分析していて、行でスタックしてしまいました

この命令でebxに書き込まれるデータの正確な物理アドレスを知りたいです。gdbは私にそれを教えてくれますfs = 0x53.

アドレスがモード (保護またはリアル) に依存することは既にわかっており、CPU が保護モードになっていることは確かです ( *を参照)。セグメント fs の開始は、GDT のどこかに格納する必要がありますよね? のアドレスもわかりましたGDT-register (0x009bd5c0007f)が、gdb ではレジスタにアクセスしたり読み取ったりすることができないため、fs (したがって、のfs:[00000004h]) の物理アドレスを調べる方法がわかりません。

誰でも私を助けてもらえますか?

私は命令を使用し、smsw axその後eaxは0x280031でした。したがって、最後のビットは 1 であり、これは保護モードを意味します。私はそれを正しく理解しましたか?