- 7
- 0
- 约1.31万字
- 约 9页
- 2017-08-20 发布于湖北
- 举报
Bochs代码导读
摘要
Bochs是一个基于LGPL的开源x86虚拟机软件,它是用C++编写的。Bochs的工作方式与VMWare等软件有所不同,VMWare是直接在实体机器的CPU上执行虚拟机的CPU指令,而Bochs则是用一个个函数来模拟一条条指令。于是,VMWare的性能比较好,但它只能在x86机器上模拟x86;而Bochs则可以在各种架构的CPU上模拟x86,当然,它的性能比较低。
本文站在一个开发人员的角度,深入浅出地介绍Bochs 2.2.6的一些重要的类,函数以及大致的工作流程,以分析CPU的模拟代码为主,不涉及BIOS、磁盘、显卡等的模拟。
1 主要的类
1.1 BX_CPU_C
在bochs.h里面有一个宏:
#define BX_CPU_C bx_cpu_c
因此BX_CPU_C类实际上表示的是bx_cpu_c类,这个类用于模拟一个CPU,它可以模拟16位(实模式)、32位(保护模式)和64位(长模式)三种模式,这三种模式的区别主要是寄存器的字长不同。下面简单介绍这个类的主要成员。
char name[64];
name变量是一个字符串,代表CPU的名字。
unsigned bx_cpuid;
CPU的ID号,Bochs可以模拟SMP(对称多处理)的机器,在SMP机器中,每个CPU都有一个ID号来
原创力文档

文档评论(0)