自己编写的80x86虚拟机 NXVM

发一款自己写的80x86虚拟机 NXVM


【简介】

这个虚拟机是用C编写的,一共37,000行代码。

它完整的模拟了一台PC,包括一个80386 CPU,以及所有必要的设备,例如内存、DMA、中断控制器、软驱、硬盘、键盘、显示器等。

因此,它可以运行一个基于x86的操作系统,如MS-DOS6.22。


NXVM虚拟机可以同时在Windows和Linux下通过编译。在Windows下,它可以运行在命令提示符窗口中(将Win32控制台作为虚拟机显示器和键盘),也可以创建自己的窗口(更加稳定)。在Linux下,它暂时只能在80x25尺寸的终端窗口中正常运行,有一定的限制。


除此之外,NXVM还包含了一个完整的调试器(16/32位),汇编器和反汇编器。因此,不仅可以跑操作系统,更可以单步调试、下断点、查看寄存器和内存状况,

以此对操作系统进行调试。


它可以运行MS-DOS 6.22系统和其他第三方程序。

对于MS-DOS 6.22,除了常规启动以外,还实现了高位内存访问(HMA),也就是DOS内核可以载入到1MB以上64K的内存中。


除了源代码以外,我还为虚拟机编写了一份设计文档,里面有详细的代码分析和使用指南,可以帮助感兴趣的人理解这一虚拟机的运作过程。


由于时间有限、文档缺乏,有部分设备没能完整实现。并且80386 CPU的虚拟86模式和保护模式也并不完整,所以暂时还只能运行MS-DOS 6.22。


之所以编写这个虚拟机,是因为自己对底层结构非常感兴趣。并且看到了easyVM的发布,因此也跃跃欲试。

NXVM的设计部分参考了easyVM(8086 CPU的指令分派和端口结构设计),CPU的调试是通过同步执行Bochs CPU,并比较寄存器/内存读写的值。

另外,LightMachine的文档也提供了不少的帮助。感谢easyVM、LightMachine和Bochs的作者们!


【Screens

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值