bochs使用指南

Bochs是用C++开发的一个模拟器,模拟整个PC。它完全是靠软件模拟来实现的。从启动到重启,包括PC的外设键盘,鼠标,VGA卡,磁盘,网卡等,全部都是有软件来模拟的,因此它非常的适合开发操作系统。

Bochs安装:

双击安装文件,点下一步完成软件安装。

Bochs的配置

       bochs的安装目录下为我们提供了一个配置文件的模版bochsrc-sample.txt。在配置文件中”#”为注释符号。只需复制该文件,修改相关变量即可。常用变量如下:

#megs: 内存,以MB为单位,你可以根据自己的机器来调整

megs: 16

# 下面两句一般是不可以改的,表示rom镜像和vga镜像。

romimage: file=../BIOS-bochs-latest, address=0xf0000

vgaromimage: file=../VGABIOS-lgpl-latest

#floppy:软盘镜像文件

floppya: 2_88=镜像路径(如C:\test.img), status=inserted

#floppyb: 1_44=镜像路径(如C:\test.img), status=inserted

# 下面是硬盘,很简单,还有就是BOCHS也是可以支持多个硬盘的。那么,硬盘文件是怎么生成的呢?我们可以发现硬盘是 img格式的。你注意没有在BOCHS文件夹里有一个工具叫 bximage.exe,他就是用来生成这个硬盘 文件的工具。

ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14

ata0-master: type=disk, path="dos.img", cylinders=306, heads=4, spt=17

# 下面这个就是光驱,如果你想使用物理光驱,只要让path=E:(我们假设E盘是光驱)

ata0-slave: type=cdrom, path="dos.iso", status=inserted

# boot:这个是启动设备,可以使用cdrom(光驱)、c(硬盘)或floppy(软驱)。

#boot: cdrom  (表示从光驱启动)

boot: c         (表示从C盘启动)

#boot: floppy  (表示从软盘启动)

# 这一句可以不要,他只是指定用来保存日志的文件。如果不指定的话他就会输出到命令控制台上。

log: bochsout.txt

# 这一句是设置在开机时是否激活鼠标,BOCHS对于鼠标的控制不是# 很好。建议如果不是特别需要的话不要激活他。在运行期间也可以点窗口右上角的鼠标图标来激活他。

mouse: enabled=0

启动BOCHS

配置好配置文件后,将文件后缀改为.bxrc。双击即可启动软件了。

调试功能

双击安装目录下的bochsdbg.exe,点击加载按钮,选择配置文件,即可进行调试。

常用调试命令如下:

help:显示帮助文档。

c:继续,前面我们已经用过了。

s:单步执行。他还有一个扩展用法。

s n :执行n步。

b 0x7c00:在内存0x7c00处设置一个断点.当程序执行到0x7c00处就自动进入到调试状态.后面的这个数指的是内存的线性地址。

x /20 0x7c00: 以16进制的形式从内存的0x7c00开始显示20个字的数据

dump_cpu:显示现在的寄存器的状态

u /20 0x7c00 :反汇编内存0x7c00处,反汇编的长度是20

 

以上是在网上很容易就能找到的使用指南,但是我在使用的过程中遇到了一些小问题,在此记下这些小问题,以备忘

 1、romimage: file=../BIOS-bochs-latest, address=0xf0000  首先是这条,在运行bochs是跳出一个窗口提示mem0在什么#0ffff什么什么结束的,后来在网上查到说是因为在2.2.5以前的版本,Bochs的BIOS大小为64K,需要指定起始地址为0xf0000。之后的版本可支持512K的BIOS镜像。现在默认用的BIOS-bochs-latest的好像是128K(官方说法),我看了一下是132K。反正不需要指定起始地址了。而我装的是2.6版本,果断吧0xf0000删了,运行成功。

 2、在调试的时候输入dump_cpu提示出错,好吧,继续上网找问题,原因如下:

  bochs 2.3.5 以上的版本好像就没有dump_cpu了,你可以试试 下面的命令 组合他们

代码:
r
fp
mmx
sse
dreg
sreg
creg

附一个我电脑上运行成功的bochsrc.bxrc

###############################################################
# bochsrc.bxrc file for Tinix.
###############################################################

# how much memory the emulated machine will have
megs: 32

# filename of ROM images
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-elpin-2.40

# what disk images will be used 
floppya: 1_44=Tinix.vfd, status=inserted

# choose the boot disk.
boot: a

# where do we send log messages?
log: bochsout.txt

# disable the mouse, since Tinix is text only
mouse: enabled=0

# enable key mapping, using US layout as default.
keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-us.map
 
原文地址:https://www.cnblogs.com/starlitnext/p/2975509.html