You will say it is ugly!

写了自己的arm仿真平台,也用了一段时间bochs,断断续续地接触qemu,似乎一直在虚拟的世界里游走,乐而忘返。

bochs是x86的全仿真平台,用的人不计其数,但好的文档却几乎不存在,毕竟写虚拟机的是少数人。http://wiki.cs.uiuc.edu/cs427/Architecture of Bochs 《Architecture of Bochs》算是比较清楚的文档。

看虚拟机,总得先从cpu入手。bochs的cpu子目录里文档较多,但稍微看看名字,就知道bochs仿处理器时把处理器拆分成很多小模块来实现,这样复杂性就降低了,而且硬件也的确就该这么做的。

bochs里用宏来决定类里的一个函数和变量是静态的还是非静态的,假如一个类只会定义一个对象,那么bochs就把类里的函数和变量定义为静态的,这样编译之后,由于无需传递this指针,从而能够稍微提高一点效率,这么做简直让人觉得不舒服了,仿佛从c++退化到半c半c++的状态,但虚拟机效率是第一位的,不是吗?

bochs里的dynamic tranlation应该在dynamic子目录下,但作者把这个目录下的东西统统删掉了,时间是1999年,bochs的动态翻译功能不知道更有否支持?