問題タブ [bochs]
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.
assembly - ブートローダーのクラッシュ
現在、ブートローダーを開発していますが、問題があります。
私はBochsを使用してブートローダーをテストし、ブートローダーをコンパイルしてディスクイメージを作成します。
これはbootloader.asmです:
そしてpostmbr.asm:
これはBochsのクラッシュログです。
そしてこれはBochsの設定ファイルです:
何が悪いのかわかりません。他のプラットフォームでブートローダーをテストしていません。
linux-kernel - Linuxカーネル0.12をコンパイルしてbochsとgdbでデバッグするには?
Linux 0.12 ソース コードと bochs ソース コードをダウンロードしました。linux-0.12 で Linux 0.12 ソース コードをコンパイルしました。次に、bochs を gdb-stub でコンパイルし、debian 6.0 にインストールしました。
ただし、gdb と bochs を使用して linux-0.12 カーネルをデバッグすると、bochs で「パニック: HD コントローラーの準備ができていません」と表示されます。それを正しくデバッグする方法は?
aix - サーバーx86/x64を使用している場合、C++上のAIX6/7でソフトウェアを開発するにはどうすればよいでしょうか。
サーバーx86/x64を使用している場合、C++上のAIX6/7でソフトウェアを開発するにはどうすればよいでしょうか。誰かが個人的にそれを試み、個人的な経験からアドバイスします:PowerPC AIXでの移植性のコンパイルを保証するx64用のIBMコンパイラーを使用するか、PowerPCx64をエミュレートしてAIXをインストールしてその下でコンパイルするWindwosx64で仮想マシンを使用できます。または、AIXでクラウドのサービスを購入して開発する方がよい場合があります。どこでそれを行うことができますか?
私が知っているように、QEMUはAIXをサポートしていません。Simics、OVPSim、Bochsなどについてどう思いますか?
debugging - bochsを使用してデバッグするときにステップオーバーしてステップリターンする方法
たとえば、今私は次の行にデバッグしています:
関数に足を踏み入れたくありません。つまり、私はステップオーバーして、アドレス:0008:00009048fに直接行きたいと思います。ボックはそれを行うことができますか?そして、私が機能に足を踏み入れた場合、どうすれば直接戻ることができますか?
operating-system - PintOS、-vオプションによるカーネルパニック、ubuntuでbochs
.../build/ で "pintos -- run alarm-multiple" を実行すると、すべて問題ないようです。
しかし、.../build/ で "make check" を実行すると、7 つのテストすべてが同じ "Run did not start up successfully: no "pintos booting" message" で失敗しました。
pintos -v -k -T 60 --bochs -- -q run alarm-single < /dev/null 2> tests/threads/alarm-single.errors > tests/threads/alarm-single.output
perl -I../.. ../../tests/threads/alarm-single.ck tests/threads/alarm-single tests/threads/alarm-single.result
FAIL tests/threads/alarm-single
Run didn't start up properly: no "Pintos booting" message
次に、.../build で「pintos -v -k -T 60 --bochs -- -q run alarm-single」を発見しました。
Bochs は次のメッセージで終了しています: [ ] bochsrc.txt:12: 表示ライブラリ 'nogui' が利用できません
「-v」を取り除けば問題ありません。
この表示ライブラリ「nogui」が利用できない問題を修正する方法
assembly - int 13hでハードドライブからセクターを読み書きする
私は簡単なプログラムを持っています。ハード ドライブ (mbr ではない) から最初のセクターを読み取り、それを 0 セクター (mbr) に書き込む必要があります。しかし、うまくいきません。間違った DAP に接続されていると思います。ありがとう。
UPD: 新しいコード
PS私はBochsを使用しています。
macos - Mac 10.8.3にbochsをインストールする
mac osx 10.8.3 を実行する mac マシンに bochs エミュレーターをインストールしようとしていますが、./configure を実行して make すると、make の最後に次のエラーが表示されます。
私のシステムにbochsをインストールする方法の手がかりはありますか?ありがとう
c - カーネル開発 アセンブリと C で
bochs を使用して Linux でアセンブリと C を使用して単純なカーネルを作成しようとしています。アセンブリ コードから C コードを呼び出そうとするたびに、エミュレータでエラーが発生し、シミュレーションがリセットされるという問題。16ビットリアルモードで開始するときは、このコードを使用します
保護モードに切り替えた後、これはコードです
c関数は基本的に空の関数だけで何もしません
私が使用しているコマンドについて私はこれらを使用します
どこに問題があるのかわからない。何か案は ?
注: 次の GDT および switch_to_pm 関数を使用しています
graphics - グラフィック付きボッホ
LinuxでBochsを使用しています。正常に動作しますが、対処できていない問題があります。vga-info (使用可能なモード、リニア フレームバッファ (LFB) のアドレス) を取得し、リアル モードで 1024*768*24 に切り替えます。vga-info モードによると、118h (1024*768*24) がサポートされ、LFB は E000:0000 からのものです (つまり、segment:offset のため E0000、またはフラット アドレッシングでは 0xE0000000 ですが、そのメモリはほぼ 3.5 であるため存在しません)。 Gb)。その後、プロテクト モード (PM) に切り替えて E0000 にデータを書き込みましたが、ピクセルが表示されません。0xE0000000 に書き込んでも同様です。ただし、A0000 に書き込んでも、A0000-C0000 メモリ (128Kb) のみがマップされている場合はそうです。32 ビットと LFB (ページングなし) のため、PM を使用したいと思います。低解像度 (例: 320*200*256) のビデオメモリが A0000 にマップされていることを知っています。Bochs-config では、vbe が有効になっています (vga: 拡張子=vbe) . bochsout.txt には、「VBE Bochs Display Extension Enabled」と表示されます。
質問: なぜビデオメモリは E0000 ではなく A0000 からのものなのですか? ビデオメモリが 128Kb しかないのはなぜですか? (次のようになります: 1024*768*3 バイト、つまり 2.25 Mb)
この方法では、ページングなしで PM でグラフィックスを実行できないか、何か間違ったことをしています。
前もってありがとう、ロブ
http://wiki.osdev.org/Bochs_Graphics_Adaptorで何かを見つけました:
"リニア フレーム バッファ (LFB) の使用
リニア フレーム バッファを使用する場合、BGA はすべてのグラフィックス メモリをリニアに公開します。古いバージョンの Bochs と QEMU では、場所は 0xE0000000 (VBE_DISPI_LFB_PHYSICAL_ADDRESS) に固定されています。ただし、Bochs が ISA ビデオ カードではなく PCI ビデオ カードをエミュレートするように構成されている場合、フレームバッファーのアドレスは固定されなくなりますが、デバイス 0x1234:0x1111 の最初の PCI BAR から読み取ることができます。LFB を有効にするには、VBE_DISPI_LFB_ENABLED を使用します。 VBE 拡張機能を有効にする場合は、フラグ (0x40) (したがって、VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED (0x41) の値を書き込みます)。
QEMU は VBE_DISPI_LFB_ENABLED フラグに注意を払いません。リニア フレーム バッファとメモリ バンクの両方が常に使用可能です。Bochs は旗に注意を払います。LFB モードでは、バンクを変更する要求を無視し、バンク メモリに書き込んでも何も起こりません。バンク モードでは、LFB メモリに書き込んでも何も起こりません。"
Bochs は最大 1Gb のメモリをサポートしており、これははるかに大きいため、この 0xE0000000 を理解できません。ところで、--enable-vbe を指定して Bochs をコンパイルして vbe を有効にすることは非推奨です。bochs-configfile では代わりに「vga: extension=vbe」を使用する必要があります。
解決策が見つかりました (vbe モードの設定中にビット「use LFB」を設定):
移動斧、4F02h ; vbe モードを設定する
mov bx, 118h ; モード 1024*768*24
または bx, 0100000000000000b ; ビット 14 を設定 (LFB を使用)
整数 10h
そして、vga-modeinfo-block が言ったように、LFB は 0xE0000000 からです。