没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
271页
1 x86 体系结构与 PC 系统概要 1.1 x86 CPU 结构 1.2 x86 体系结构概览 1.3 PC 系统 2 Bochs 工程概述 11 2.1 开源项目 Bochs 介绍 2.2 版本 2 源码组织 2.3 工程类结构 2.4 主体框架结构分析 (1) VM 控制台界面类 (2) CPU 模拟 (3) Memory 模拟 (4).I/O device 模拟 2.5 Bochs 的工作方式 3 CPU 类的源码分析 3.1 CPU 类概述 3.2 类 BX_CPU_C 源码分析 3.3 通用寄存器 3.4 段寄存器、全局寄存器 GDI 和 IDT 3.5 CPU 状态字 EFLAGS Bochs 项目源码分析与注释 MAY 2006 Understanding the source code of bochs 3.6 函数 CPU_LOOP()结构分析 3.7 函数 handleAsyncEvent()分析 3.8 取指与执行 4 CPU 中断处理任务管理 4.1 IA-32 体系结构中断知识准备 4.2 Bochs 对中断的模拟 4.3 虚拟机的任务管
资源推荐
资源详情
资源评论
Bochs 项目源码分析与注释
Understanding the source code of bochs
作者:喻强
MAY 2006
Bochs 项目源码分析与注释 MAY 2006
Understanding the source code of bochs
1
Bochs 项目源码分析与注释 MAY 2006
Understanding the source code of bochs
写在前面
今天,虚拟机及虚拟化技术在计算机领域扮演越来越重要的角色,从 CPU 模拟器到服
务器虚拟化管理软件,从商业化的成熟软件到开发源码的自由软件项目。形形色色的虚拟机
程序光名字就让人目不暇接。它们实现的功能也不尽相同: JAVA 虚拟机实现了代码的跨平
台运行,Virtual PC 提供了一台虚拟的 PC 机供人们使用,VMware ESX server 则将一台功能
强大的服务器划分称为若干网络虚拟主机。还有一些实际上可以被称为模拟器的虚拟机则仿
真了某种 CPU 及系统的功能。
本文讲述的 Bochs 即为一个 x86 CPU 的模拟器,它是一个用 C++语言写成的高移植性
的开源 IA-32架构的 PC模拟器,可以在很多的流行操作系统上运行。它模拟了Intel x86 CPU,
常见 IO 设备以及一个 BIOS。 当前, Bochs 可以编译为模拟 386,486,Pentium,Pentium
Pro 或 AMD64 CPU,包括可选的 MMX,SSE,SSE2 和 3DNow!指令集。Bochs 中可以运行
的操作系统包括 Linux,DOS,Windows。Bochs 由 Kevin Lawton 在 1994 年开始编写。它最
初是作为商业产品开发的,但到了 2000 年 3 月,Mandrakesoft 公司买下了 Bochs,使之成
为遵循 GNU LGPL 的开源软件。2001 年 3 月,Kevin 帮助一些开发者把 Bochs 移到了
sourceforge.net 网站。
Bochs 可以使用不同的模式编译,有些还在开发之中。典型的应用就是提供了完整的
x86 PC 模拟器,包括 x86 CPU、硬件设备以及存储器。因为是一个开源的项目,在互联网
上得到了世界各地的程序爱好者的支持,不断的对其进行功能完善并修改存在的错误,在
2006 年 1 月 29 日,Bochs 的最新版本 2.2.6 版已经发行。
经过为期几个月的源码阅读,我把自己理解的一些东西整理出来,并结合相关知识点
给出了简要的分析,这些代码基本上覆盖了 Bochs 工程的主体线索。当然,整个 Bochs 工程
由 300 多个源文件组成,代码约 20 万行,不可能全部列出,因此,只对重要的数据和结构
作了注释。通过对源码的研究和学习,能够更为深入的理解 x86 CPU 及 PC 系统的工作原理。
你可以看到硬件对每条指令的执行是怎样用软件精确的再现出来,存储器地址究竟是如何映
射的,你也会学到怎么去编程驱动一个 ATA 设备或显卡……所有的隐藏在硬件中的东西被
Bochs 暴露无遗。
了解嵌入式系统的读者一定知道 SkyEye,这是清华大学开发的 ARM 平台模拟器,目
前很多功能已经实现,该项目得到了嵌入式 Linux 开发爱好者的支持和极力推崇。当我知道
了这个项目的时候,我觉得这是一条很好的路,作为致力于底层程序设计的软件人员,应该
Bochs 项目源码分析与注释 MAY 2006
Understanding the source code of bochs
踏实的掌握每一个细节,理解每一个具体概念,而不应当只停留在调用某个现成的函数的水
平上。
希望这篇源码分析报告能够给从事 x86 体系上系统程序或设备驱动程序设计的人们一
点参考和帮助。时常听说学习 Linux 的最好方法就是去阅读源代码,所以希望我的工作能够
起到抛砖引玉的作用,让更多的人来掌握和运用这个学习方法。
由于水平有限,文中出现的错误敬请指正!
2006.5于南京工业大学
Bochs 项目源码分析与注释 MAY 2006
Understanding the source code of bochs
Table of Content
Chapter 1 x86 体系结构与 PC 系统概要 .....................................1
1.1 x86 CPU 结构...............................................................................................................1
1.1.1 冯诺依曼架构和 CISC 指令集 ......................................................................1
1.1.2 CPU 结构........................................................................................................1
1.1.3 CPU 工作模式................................................................................................2
1.2 x86 体系结构概览........................................................................................................3
1.3 PC 系统.........................................................................................................................5
1.3.1 PC 系统概述...................................................................................................5
2.3.2 总线拓扑.........................................................................................................6
2.3.3 存储器与 I/O 编址 .........................................................................................6
2.3.4 关于系统的启动与引导.................................................................................8
Chapter 2 Bochs 工程概述 ....................................................... 11
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
剩余270页未读,继续阅读
资源评论
- weixin_399871952024-04-03资源不错,对我启发很大,获得了新的灵感,受益匪浅。
- weixin_384401992024-04-01发现一个宝藏资源,资源有很高的参考价值,赶紧学起来~
ziix
- 粉丝: 2413
- 资源: 201
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功