Bochs源码分析1

因为学习需要,要看虚拟机Bochs的源代码。写随笔主要为了学习总结,其次是分享大家共同研究,大神勿喷,欢迎评论。

手头资料:bochs源代码,下于:bochs.sourceforge.net,还有喻强写的源码分析电纸书。

总结:模拟器其实也是主机里面难得一个应用程序,在编译器编译时要有一个程序入口,编译完从此处一直执行下去。其实入口在bochs之目录下main.cpp,有WinMain和main两个入口,因为编译环境选择其一进入。两个函数都是接受运行bochs时的命令行参数放在全局变量bx_startup_flags里,然后调用bxmain,真正开始初始化。在这里面首先调用函数bx_init_siminterface (); 创建一个SIM类,从名字可以看出这是一个接口类,进行模拟机(minulator)和用户控制台的通信的类。该类从用户那里得到模拟机的一系列可配置选项:如内存大小,BIOS文件的位置,是否开启键盘等。等这些配置一一得到,模拟机开始初始化化,初始化时从SIM类那里得到配置。模拟机嘛就是模拟主机,所以模拟机的组件包括CPU(主要的)、内存(主要的)、各种外设类。当然这些组件不可能用硬件来实现,都有相应的类,CPU用--BX_CPU,内存用--BX_MEM,类其中的变量值来保存其状态,类中函数实现其功能,如取指令,执行指令。前面说到程序进入bxmain,并且创建了接口类SIM,先调用bx_init_main (bx_startup_flags.argc, bx_startup_flags.argv),进行运行初始化,主要任务是根据命令行参数获取如何运行,如快速运行,调试运行等,后面调用SIM->configuration_interface(ci_name, CI_START)这时进行模拟机的配置,实现方法是不同的配置类(CI)如文本配置、窗口界面配置类分别在SIM类中注册配置函数,SIM类根据调用其中一种配置方法。如:调用textconfig.cpp中的bx_config_interface(),等不同的配置类,完成模拟机的配置工作,分别会启动模拟机,开始模拟机的初始化(就是CPU类的初始化,内存的初始化等)。

转载于:https://www.cnblogs.com/zeng2013/p/3404379.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bochs项目源码分析与注释 Table of Content Chapter 1 x86 体系结构与 PC 系统概要1 1.1 x86 CPU 结构1 1.1.1 冯诺依曼架构和CISC 指令集 1.1.2 CPU 结构 1.1.3 CPU 工作模式 1.2 x86 体系结构概览 1.3 PC 系统 1.3.1 PC 系统概述 2.3.2 总线拓扑 2.3.3 存储器与I/O 编址 2.3.4 关于系统的启动与引导 Chapter 2 Bochs 工程概述 2.1 开源项目Bochs 介绍........................................11 2.2 版本2.2.1 源码组织..................................................................................................11 2.3 工程类结构.................................................................................................................12 2.4 主体框架结构分析.....................................................................................................13 2.4.1 Bochs 工程中的重要类................................................................................13 (1) VM 控制台界面类.............................................................................................13 (2 ) CPU 模拟............................................................................................................14 (3) Memory 模拟......................................................................................................14 (4 ).I/O device 模拟...................................................................................................15 2.4.2 入口函数main()及Win32 Gui 初始化........................................................15 2.5 Bochs 的工作方式......................................................................................................18 Chapter 3 CPU 类的源码分析...................................................20 3.1 CPU 类概述................................................................................................................20 3.1.1 CPU 逻辑结构框图......................................................................................20 3.1.2 类BX_CPU_C 成员归纳.............................................................................20 3.2 类BX_CPU_C 源码分析..........................................................................................21 3.2.1 CPU 特性声明..............................................................................................21 3.2.2 类bxInstruction_c 成员分析........................................................................22 3.2.3 类BX_CPU_C 源码注释.............................................................................22 3.3 通用寄存器.................................................................................................................29 3.3.1 数据结构与注释...........................................................................................29 3.3.2 通用寄存器归纳...........................................................................................30 3.4 段寄存器、全局寄存器GDI 和IDT ........................................................................31 3.4.1 数据结构与注释...........................................................................................31 3.4.2 段寄存器结构分析.......................................................................................33 3.5 CPU 状态字EFLAGS................................................................................................35 3.5.1 数据结构与注释...........................................................................................35 Understanding the source code of bochs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值