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的动态翻译功能不知道还有否支持?
|