问题标签 [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.

0 投票
3 回答
1138 浏览

assembly - 引导加载程序崩溃

我目前正在开发我的引导加载程序,但我有问题。

我使用 Bochs 测试引导加载程序,编译引导加载程序并制作磁盘映像:

这是 bootloader.asm:

和 postmbr.asm:

这是来自 Bochs 的崩溃日志:

这是 Bochs 的配置文件:

我不知道出了什么问题,我还没有在其他平台上测试过我的引导加载程序。

0 投票
0 回答
509 浏览

linux-kernel - 如何编译 linux 内核 0.12 并使用 bochs 和 gdb 进行调试?

我已经下载了 linux 0.12 源代码和 bochs 源代码。我在 linux-0.12 中编译了 linux 0.12 源代码。然后我用 gdb-stub 编译了 bochs 并安装在 debian 6.0 中。
但是,当我使用 gdb 和 bochs 调试 linux-0.12 内核时,它在 bochs 中说:“Panic:HD Controller not ready”。那么如何正确调试呢?

0 投票
1 回答
676 浏览

aix - 拥有x86/x64服务器,如何在AIX6/7下在C++上最好地开发软件?

拥有x86/x64服务器,如何在AIX6/7下在C++上最好地开发软件?有人亲自尝试过,并根据个人经验提出建议:可以有任何 IBM 的 x64 编译器,以确保 PowerPC AIX 上的可移植性编译,或者可以在 Windwos x64 下拥有虚拟机,并模拟 PowerPC x64 来安装 AIX 并在其下编译,或者可能更好地购买 AIX 的云服务来开发,我在哪里可以做?

据我所知,QEMU 不支持 AIX。你对 Simics、OVPSim 和 Bochs 或其他有什么看法?

0 投票
1 回答
408 浏览

debugging - 使用bochs调试时如何跨步和单步返回

例如,现在我正在调试该行:

我不想进入这个功能。也就是说,我想跨过去,直接去地址:0008:0009048f。博克斯能做到吗?如果我已经步入函数,我怎么能直接返回呢?

0 投票
3 回答
6499 浏览

operating-system - PintOS,ubuntu 上带有 -v 选项 bochs 的内核恐慌

当我在 .../build/ 中执行“pintos -- run alarm-multiple”时,一切似乎都很好。

但是当我在 .../build/ 中进行“检查”时,所有 7 个测试都以相同的“运行未正确启动:没有“pintos 启动”消息失败

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: display library 'nogui' not available

如果我去掉“-v”就可以了。

如何修复此显示库“nogui”不可用

0 投票
4 回答
15840 浏览

assembly - 使用 int 13h 从硬盘驱动器读取一个写入一个扇区

我有一个简单的程序。它必须从硬盘驱动器(不是 mbr)读取第一个扇区,并将其写入 0 扇区(mbr)。但它不起作用。我认为它与错误的 DAP 有关。谢谢。

UPD:新代码

PS我正在使用Bochs。

0 投票
0 回答
383 浏览

macos - 在 mac 10.8.3 上安装 bochs

我正在尝试在运行 mac osx 10.8.3 的 mac 机器上安装 bochs 模拟器但是当我运行 ./configure 并 make 在 make 结束时出现以下错误

那么任何线索如何在我的系统上安装bochs?谢谢

0 投票
1 回答
404 浏览

c - 汇编和 C 中的内核开发

我正在尝试使用 bochs 在 linux 上使用汇编和 C 创建一个简单的内核。每次我尝试从汇编代码调用 c 代码时,模拟器都会给我一个错误并重置模拟的问题。当我以 16 位实模式启动时,我使用此代码

切换到保护模式后,这是代码

而 c 函数基本上什么都不做,只是一个空的

关于我正在使用的命令我使用这些

我不知道问题出在哪里。有任何想法吗 ?

注意:我正在使用以下 GDT 和 switch_to_pm 函数

0 投票
1 回答
1708 浏览

graphics - 带图形的博克斯

我在 Linux 上使用 Bochs。它工作正常,但有一个问题我无法解决。我得到了 vga-info(可用模式,线性帧缓冲区(LFB)的地址),然后在实模式下切换到 1024*768*24。根据 vga-info 模式,支持 118h (1024*768*24),LFB 来自 E000:0000(即 E0000,因为段:偏移,或平面寻址中的 0xE0000000,但该内存不存在,因为它几乎是 3.5千兆)。后来我切换到保护模式(PM)并将数据写入E0000,但没有出现像素。如果我写到 0xE0000000 也不行。但是,如果我写入 A0000 但只有 A0000-C0000 内存(128Kb)被映射,他们会这样做。由于 32 位和 LFB(无分页),我想使用 PM。我知道较低分辨率的显存(例如 320*200*256)映射到 A0000。在 Bochs-config 中启用 vbe (vga: 扩展=vbe) 。bochsout.txt 说“已启用 VBE Bochs 显示扩展”。

问题:为什么显存来自 A0000 而不是来自 E0000?为什么只有128Kb的显存?(应该是:1024*768*3字节,即2.25Mb)

这样,没有分页就不能在 PM 中完成任何图形,或者我做错了什么。

提前谢谢,抢

我在http://wiki.osdev.org/Bochs_Graphics_Adaptor找到了一些东西:

“使用线性帧缓冲区 (LFB)

使用线性帧缓冲区时,BGA 以线性方式公开所有图形内存。在较早版本的 Bochs 和 QEMU 中,该位置固定为 0xE0000000 (VBE_DISPI_LFB_PHYSICAL_ADDRESS)。但是,当 Bochs 被配置为模拟 PCI 视频卡而不是 ISA 时,帧缓冲区的地址不再固定,而是可以从设备 0x1234:0x1111 的第一个 PCI BAR 中读取。要启用 LFB,请使用 VBE_DISPI_LFB_ENABLED启用 VBE 扩展时标志 (0x40)(因此写入值 VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED (0x41))。

QEMU 不关注 VBE_DISPI_LFB_ENABLED 标志。线性帧缓冲区和存储库始终可用。博克斯关注旗帜。在 LFB 模式下,它会忽略更改 bank 的请求,并且当您写入 bank 内存时不会发生任何事情。在 banked 模式下,当您写入 LFB 内存时不会发生任何事情。"

我不明白这个 0xE0000000 因为 Bochs 支持最大 1Gb 内存,而这远远不止。顺便说一句,通过使用 --enable-vbe 编译 Bochs 来启用 vbe 已被弃用,应该在 bochs-configfile 中使用“vga: extension=vbe”。

找到解决方案(在设置 vbe 模式期间设置位“使用 LFB”):

移动斧头,4F02h;设置 vbe 模式

mov bx, 118h ; 模式1024*768*24

或 bx, 0100000000000000b ; 设置第 14 位(使用 LFB)

整数 10 小时

正如 vga-modeinfo-block 所说,LFB 来自 0xE0000000。

0 投票
0 回答
772 浏览

assembly - 使用 Bochs 调试引导加载程序

我正在尝试在 Bochs 中调试 16 位引导加载程序,但是在运行代码时遇到以下错误:

jmp far ptr 0:61Dh => 错误:应有逗号、冒号或行尾

错误截图

有人可以建议我如何正确地在 NASM 中重新组装 MBR 而不会遇到这个错误?

ASM 文件在这里

谢谢