问题标签 [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 投票
2 回答
523 浏览

assembly - 调试bochs中引导扇区的int 13h 02h函数

我想调试一个引导扇区,它会读取软盘。我在 bochs 中调试它并想检查它是读取成功还是失败。我知道AH寄存器可以返回代码,但我也想看看它读到了什么,所以我想检查物理内存中的es:bx堆栈,但它都传播了0x00。为什么?

此代码由 as86 编写并由 ld86 链接。我使用 bochs 磁盘映像创建工具创建了软盘映像,并使用命令创建dd bs=32 if=boot of=/dev/fd0 skip=1了这个可启动的软盘映像。

我注意到标志重新返回了 0x00000046,因此 CF 为 0,表明该操作没有错误。但是ax寄存器是0x0201。啊寄存器是 0x02 是错误码。我不知道为什么?

以下是我的 bochs 文件:

这是代码:

as86写的代码,我在第二个扇区的开头加了一个字。

我将调试信息粘贴到 bochs 中。

0 投票
3 回答
1172 浏览

c - 在 C 函数调用中传递 char 字符串时,Bochs (2.4.6)/GRUB (0.97) “错误 13 无效或不受支持的可执行格式”

我正在尝试遵循“关于操作系统开发的小书”并做一个我正在启动的小型操作系统。

但是我遇到了一个我无法解决或解释的问题。简而言之,当传递一个 char 字符串(在 C 中)时,内核启动正常并且在执行时工作;

但是当我尝试直接调用函数时,使用函数调用中定义的 char 字符串,GRUB 不会启动我的内核;

然后我得到

编译和链接似乎很顺利,没有任何警告或错误。

我错过了什么?或者我做错了什么?


主程序

加载器.s

链接.ld

bochsrc.txt

生成文件

0 投票
1 回答
455 浏览

x86 - 在 GDT/LDT/IDT 输入上设置断点

我正在研究 x86 架构,我想在全局描述符表条目或解释描述符表条目或 ldt 上设置一个断点 - 这意味着,例如,每次从 idt/gdt/ldt 读取特定条目时将触发断点。

我正在尝试使用 bochs x86 模拟器来模拟这种情况,但是我很难做到。

谢谢。

0 投票
0 回答
277 浏览

assembly - 引导加载程序在 Bochs 中正确加载是否需要 BPB?

我正在为 FAT12 软盘编写引导加载程序并使用BFI创建 IMG 映像。如果我从引导加载程序程序集中删除BPB代码,我会在Bochs中收到以下错误:

MOV_EwSw: using of nonexisting segment register 7

这个引导加载程序只是打印一个字符串。

Bochs 中是否需要 BPB 代码?为什么?

编码

0 投票
1 回答
155 浏览

windbg - 将 Windbg 连接到 Bochs 虚拟机

我想将windbg连接到Bochs虚拟机以调试操作系统,但是当操作系统启动操作开始时windbg终止(没有任何错误消息。)

请考虑我已经通过 com 端口将 windbg 连接到 Bochs。

0 投票
1 回答
152 浏览

operating-system - Cygwin 上的 Bochs 编译错误

我正在尝试按照G.1 部分的本教程在 Cygwin 上构建 Bochs。当我尝试输入命令时,./configure --enable-gdb-stub我得到以下输出:

config.log我的文件的违规行是:

我是操作系统工作的新手,这个问题让我困了几个小时。我不明白为什么-mno-cygwin甚至被作为gcc. 任何可能的解决方案?

0 投票
1 回答
572 浏览

assembly - BIOS INT13h AH=42h 带 BOCHS

我的引导加载程序代码有问题。我尝试使用 INT 13h AH=42h: "Extended Read Sectors From Drive" BIOS 3.0 版 (EDD-3.0) 和 BOCHS 将我的内核代码从硬盘映像复制到实模式下 0x100000 以上的内存位置。

当我使用 INT13 AH=41h BX=55AAh 函数检查是否支持 EDD-3.0 时,我得到了肯定的结果。我正在使用 BOCHS 2.6.8。

我使用这个 DAP。BOCHS 所做的是将 4 个块从磁盘复制到 FFFF:FFFF mod 100000h = FFEFh。我究竟做错了什么?我使用 Ralf Brown 的中断列表 ( http://www.ctyme.com/intr/rb-0708.htm ) 作为参考。

0 投票
1 回答
799 浏览

fedora - Fedora 22 上的 bochs:加载模块 libbx_usb_uhci.so 失败

我在全新安装的 Fedora 22 AMD64 系统上使用 BOCHS (Paket bochs-2.6.2-7.fc22.x86_64) 遇到了一些麻烦。我使用 yum 来获取 bochs,但如果我尝试开始模拟,我会收到一条错误消息:

我在网上搜索了一个没有成功的解决方案。

0 投票
1 回答
592 浏览

assembly - Debug Boot Sector in Bochs how jmpi works and cpu calculate the instruction address

I encounter several problems when I debug boot sector in bochs.

When debug a boot sector in bochs, bochs debugger first pause in the

Q1: Is this instruction jmpf 0xf000:e05b the jump instruction in this last 16 byte memory?

Q2: What instruction in address 0xf000:e05b?

Then we want to let code stop at address 0x7c00

These lines of code are generated by jmpi go,#0x7c00 go: move ax,cx.

Q3: instruction jmpi is translated into jmpf and machine code ea, is it right?

Q4: 0x0005 is the offset of label go. When does this offset computated? At link time?

ea0500c007 is the machine code of jmpf. ea is instruction, 07c0:0005 is the operand (because x86 is litten endian). This code is 5 bytes.

Q5: How CPU read this instruction and how PC calculate the size of this instruction? Does CPU encounter ea then read next 4 bytes as its operand?

0 投票
1 回答
1220 浏览

linux - 有谁知道 LD_PRELOAD 变量在哪里,在哪个文件中?

正如标题所说,我不知道这个变量在哪里。我只知道如何通过键入来更改它: $ export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libXpm.so.4 那么是否可以在其文件中更改它?