问题标签 [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 上工作但在计算机上不工作
我正在制作一个打印 3 个字符串的引导加载程序。我可以成功打印那些由 bochs 中的行分隔的字符串,但是当我使用 Rawrite 将 512 字节引导加载程序写入 USB 并引导它时,我不能这样做。它只打印新行。我什至初始化了寄存器。
我只是一个初学者。这个问题对我没有帮助-代码适用于bochs但不适用于真实计算机,x86实模式
x86 - int 13h 42h 不会在 Bochs 中加载任何内容
我将引导加载程序从 CHS 更改为 LBA,所以我int 13h 02h
用int 13h 42h
. 它在 QEMU 中正常工作,但是,我在使用 Bochs 和我的笔记本电脑运行它时遇到了麻烦。
我用dd if=main.bin of=/dev/sdb bs=512
. 笔记本电脑加载 Intel UNDI 并给我以下错误:No bootable device - insert boot disk and press any key
.
因此,我尝试使用 Bochs 对其进行调试,并注意到 Bochs 将此二进制文件识别为可引导文件。但是,执行后没有加载任何内容int 13h
。
然后我尝试从这个闪存驱动器加载我的旧电脑,它工作正常!它加载程序并正确执行它。QEMU 给了我同样的结果。
这是引导加载程序代码:
bochsrc:
kernel - 在没有文件系统的情况下加载内核 - osdev
我构建了一个引导加载程序来将我的内核加载到内存中。内核代码位于软盘的扇区中。2 阶段引导加载程序从软盘中读取内存的原始字节并将其放置在内存中并执行内核。这在 bochs 模拟器上运行良好,但在 qemu 模拟器上失败。
那里的一些教程建议将内核文件保存在文件系统(如 FAT12)上,然后从中读取文件。所以,我想问一下,这样的系统真的可以在物理机器上工作,还是会像在 qemu 模拟器上那样失败?以这种方式阅读内核也很好吗?
我将来可能会在 C 中实现一个文件系统,而不是使用程序集在引导加载程序中实现它
qemu 的问题可能是由于我的图像文件不是 512 字节的倍数,导致最后一个扇区不可读
编辑: 第一阶段引导加载程序成功地在 Qemu 和 Bochs 上加载第二阶段。第 1 阶段引导加载程序是 -
第 2 阶段引导加载程序是 -
BIOS.asm:
protected_mode.asm:
print32.asm:
gdt.asm:
生成文件
macos - 使用 macports 向 bochs 添加调试
我似乎无法在 bochs 上进行调试。我使用 macports 安装了它。具体来说,当我启动 bochs 时,命令行永远不会出现。
我很确定我在安装它时包含了调试变体;但是,我想我可能打错了。
当我跑步时port installed bochs
,我得到了这个
这似乎表明未安装调试变体;但是,当我尝试添加调试变体时,响应表明无需执行任何操作:
是否有其他方法可以验证是否存在调试,并在必要时添加它?
debugging - 有没有办法跳过 Bochs 调试命令行?
我有启用调试的 bochs 版本。虽然我偶尔需要调试模式,但大多数时候,我想直接从终端启动 bochs,而无需停止在调试命令行上按“c”。是否有可以执行此操作的设置(不需要我安装两个不同版本的 bochs)?
assembly - NASM with Bochs - 组装 - 打印字符串
我想打印一个字符串,并且正在使用 NASM Assembly、Bochs 来运行程序,并且有两个简单的文件。我正在制作一个非常简单的引导扇区来开始学习汇编。我正在尝试自学,并且正在使用此 PDF: https ://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf 我正在尝试创建自己的字符串打印功能。
问题:
我的代码:
bootsect.asm
str_out.asm
博克斯配置:
当 Bochs 启动时,屏幕清除,没有任何反应。我究竟做错了什么?
(感谢 Jester 告诉我我没有说明问题。我还是 Stack Overflow 的新手。)
assembly - 模拟环境——硬件时钟比每秒 18.2 次快很多?
我正在编写一个组装游戏,它使用实时硬件 BIOS 时钟(每秒滴答 18.2 次)进行延迟。我正在使用 BOCHS 调试程序,并且还使用 VirtualBox 对其进行了测试。
现在,问题是在这些虚拟环境中,硬件时钟太快了(肯定快于每秒 18.2 次)。如果我将延迟设置为 1 秒,BOCHS 和 VirtualBox 会比预期的时间快 10 倍左右完成延迟。在一台真实的计算机上,延迟正好是 1 秒(应该是这样)。
几天前我问了一个问题,我错误地认为我真正的笔记本电脑 BIOS 运行得太快了:嗯,实际上是相反的。
BIOS = 精确时序
仿真 = 时序太快
我的实际代码没有问题(我只是使用 int 15h,ah = 86h)BIOS WAIT 服务,它反过来访问时钟。所以...
我想知道模拟环境如何能够承受如此高的“实时”时钟滴答率。这不会弄乱其他程序吗?最重要的是,例如,如何“调整” BOCHS 中的时钟?我是否可以使模拟时钟准确,这样我每次想要测试我的游戏时都不必重新启动笔记本电脑?
PS:我还注意到“_”光标的闪烁速度比 BOCHS 中的预期快
linux - Pintos,检查失败。运行未正确启动:没有“Pintos booting”消息
我发现有人在PintOS 之前问过一个相关问题,内核恐慌与 -v 选项 bochs on ubuntu
但是,我尝试了,但没有奏效。“pintos -- run alarm-multiple”看起来不错,但是当我做“检查”时
......
Run didn't start up properly: no "Pintos booting" message
pintos -v -k -T 480 --bochs -- -q -mlfqs run mlfqs-block < /dev/null 2> tests/threads/mlfqs-block.errors > tests/threads/mlfqs-block.output
perl -I../.. ../../tests/threads/mlfqs-block.ck tests/threads/mlfqs-block tests/threads/mlfqs-block.result
FAIL tests/threads/mlfqs-block
Run didn't start up properly: no "Pintos booting" message
FAIL tests/threads/alarm-single
FAIL tests/threads/alarm-multiple
FAIL tests/threads/alarm-simultaneous
FAIL tests/threads/alarm-priority
FAIL tests/threads/alarm-zero
FAIL tests/threads/alarm-negative
FAIL tests/threads/priority-change
FAIL tests/threads/priority-donate-one
FAIL tests/threads/priority-donate-multiple
FAIL tests/threads/priority-donate-multiple2
FAIL tests/threads/priority-donate-nest
FAIL tests/threads/priority-donate-sema
FAIL tests/threads/priority-donate-lower
FAIL tests/threads/priority-fifo
FAIL tests/threads/priority-preempt
FAIL tests/threads/priority-sema
FAIL tests/threads/priority-condvar
FAIL tests/threads/priority-donate-chain
FAIL tests/threads/mlfqs-load-1
FAIL tests/threads/mlfqs-load-60
FAIL tests/threads/mlfqs-load-avg
FAIL tests/threads/mlfqs-recent-1
FAIL tests/threads/mlfqs-fair-2
FAIL tests/threads/mlfqs-fair-20
FAIL tests/threads/mlfqs-nice-2
FAIL tests/threads/mlfqs-nice-10
FAIL tests/threads/mlfqs-block
27 of 27 tests failed.
../../tests/Make.tests:26: recipe for target 'check' failed
make: *** [check] Error 1
assembly - 第二阶段 bootLoader 未在 bochs、LINUX (ubuntu 16.04)、Brokenthorn osdev 系列中加载
我正在关注breakthorn OS开发系列,直到现在我能够成功运行bootloader stage1,但是在linux机器(ubuntu 16.04)上的bochs模拟器中从FAT12软盘加载第二阶段引导加载程序存在一些问题(它在虚拟机中运行良好)。这是我的 stage1 引导加载程序:
我正在尝试在内存地址 0x500 处查找并加载第二阶段引导加载程序。似乎第二阶段没有在 0x500 加载。Bochs 刚刚在打印“跳转到第二阶段”后挂起(在跳转到第二阶段之前打印调用)。这是bochs日志:
这是bochs的配置文件:
这就是我创建和安装 FAT12 软盘的方式
最后一行“准备加载操作系统”是第二阶段引导加载程序的一部分。但它无法在bochs中工作,可能是什么原因?
最后是第二阶段引导加载程序(如果需要):