摘要: 因为学习需要,要看虚拟机Bochs的源代码。写随笔主要为了学习总结,其次是分享大家共同研究,大神勿喷,欢迎评论。手头资料:bochs源代码,下于:bochs.sourceforge.net,还有喻强写的源码分析电纸书。Bochs虚拟机一个很重要的功能就是调试,有助于系统程序的开发与研究,虚拟机可以让操作系统在任何时候停止运行,并查看此时计算机内部所有部件的内容与数据状态。在Bochs源码中有关模拟机调试的代码放在bx_debug子目录下,其中调试的主体框架在dbg_main.cpp实现,当然调试没有响应的类(调试类),而是一些响应的调试函数,这些函数是和模拟机主程序一起运行,即位于同一线程。如 阅读全文
posted @ 2013-11-06 22:04 安心编码 阅读(830) 评论(0) 推荐(0) 编辑
摘要: 因为学习需要,要看虚拟机Bochs的源代码。写随笔主要为了学习总结,其次是分享大家共同研究,大神勿喷,欢迎评论。手头资料:bochs源代码,下于:bochs.sourceforge.net,还有喻强写的源码分析电纸书。计算机系统最主要的两个部件是CPU和内存。CPU负责不断读取内存里面的指令进行工作。一块固定大小的内存条(2G)和能由很多ROM,RAM,SDRAM通过位扩展法、字扩展法共同组合而成,有的外部设备的驱动的各种特殊功能控制器也被编址到内存空间,也就是说:内存集成了很多功能,虽然同样是内存空间的地址访问,可能对应不同的设备,有着不同的处理办法。CPU对外界的访问是通过地址线和内存线, 阅读全文
posted @ 2013-11-06 09:51 安心编码 阅读(1162) 评论(0) 推荐(0) 编辑
摘要: 因为学习需要,要看虚拟机Bochs的源代码。写随笔主要为了学习总结,其次是分享大家共同研究,大神勿喷,欢迎评论。手头资料:bochs源代码,下于:bochs.sourceforge.net,还有喻强写的源码分析电纸书。在Bochs模拟机里面CPU类是最复杂的一个类,也是最重要的一个类。原因很简单,在整个计算机体系中CPU处于中心位置,计算机其它部件都是在CPU的调控下进行有序的工作,当然CPU如何去和其它部件打交道,也和当时处理的指令有关系。在CPU/cpu.h中申请了很多变量,主要有:通用寄存器如:EAX,EBX,ECX,EDX,EBP,ESI,EDI,ESP作为一些运算的临时变量,各种状态 阅读全文
posted @ 2013-11-04 22:10 安心编码 阅读(1748) 评论(0) 推荐(0) 编辑
摘要: 因为学习需要,要看虚拟机Bochs的源代码。写随笔主要为了学习总结,其次是分享大家共同研究,大神勿喷,欢迎评论。手头资料:bochs源代码,下于:bochs.sourceforge.net,还有喻强写的源码分析电纸书。从程序运行到模拟机真正开始工作,即模拟程序代码的运行,这一部分称为程序的初始化。其中主要包括1:获取用户参数决定程序运行方式,2:获取模拟器配置信息(主要放在配置文件bochsrc里),获取完整的配置信息才能组成完整的模拟机,然后进行3:模拟机各个部件的初始化化,如:CPU初始化,内存初始化等,4:还要新建一个窗口作为模拟机的屏幕显示模拟系统信息。下面我们来看程序源码是如何完成这 阅读全文
posted @ 2013-11-03 22:22 安心编码 阅读(1864) 评论(0) 推荐(0) 编辑
摘要: 因为学习需要,要看虚拟机Bochs的源代码。写随笔主要为了学习总结,其次是分享大家共同研究,大神勿喷,欢迎评论。手头资料:bochs源代码,下于:bochs.sourceforge.net,还有喻强写的源码分析电纸书。总结:模拟器其实也是主机里面难得一个应用程序,在编译器编译时要有一个程序入口,编译完从此处一直执行下去。其实入口在bochs之目录下main.cpp,有WinMain和main两个入口,因为编译环境选择其一进入。两个函数都是接受运行bochs时的命令行参数放在全局变量bx_startup_flags里,然后调用bxmain,真正开始初始化。在这里面首先调用函数bx_init_si 阅读全文
posted @ 2013-11-02 22:09 安心编码 阅读(1142) 评论(0) 推荐(0) 编辑
摘要: 最近一段时间,要看虚拟机Bochs的源代码,以了解其工作机制,有没有现阶段正在学习的同学,共同探讨与学习。 阅读全文
posted @ 2013-11-01 16:36 安心编码 阅读(350) 评论(0) 推荐(1) 编辑