实例介绍
【实例简介】
开源虚拟机源码分析
【实例截图】
【核心代码】
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 Bochs 项目源码分析与注释 MAY 2006 Understanding the source code of bochs 3.5.2 源码分析.......................................................................................................39 3.6 函数 CPU_LOOP()结构分析.....................................................................................40 3.6.1 CPU_LOOP()函数总体结构........................................................................40 3.6.2 函数 CPU_LOOP()源码注释.......................................................................41 3.7 函数 handleAsyncEvent()分析...................................................................................44 3.7.1 函数 handleAsyncEvent()知识准备.............................................................44 3.7.2 函数 handleAsyncEvent()结构分析.............................................................46 3.7.3 函数 handleAsyncEvent()源码注释.............................................................47 3.8 取指与执行.................................................................................................................50 3.8.1 Intel IA-32 指令结构....................................................................................50 3.8.2 类 bxInstruction_c 的数据成员....................................................................53 3.8.3 取指译码函数 FetchDecode()分析 ..............................................................55 3.8.4 模拟指令的执行...........................................................................................59 Chapter 4 CPU 中断处理任务管理............................................60 4.1 IA-32 体系结构中断知识准备 ..................................................................................60 4.1.1 中断和异常概述...........................................................................................60 4.1.2 异常和中断向量...........................................................................................60 4.1.3 中断和异常来源...........................................................................................61 4.1.4 与中断处理相关的数据结构.......................................................................62 4.1.5 异常和中断的处理方法...............................................................................64 4.2 Bochs 对中断的模拟..................................................................................................68 4.2.1 概述...............................................................................................................68 4.2.2 主要函数的源码注释...................................................................................69 4.3 虚拟机的任务管理.....................................................................................................82 4.3.1 IA-32 任务管理知识准备 ...........................................................................82 4.3.2 函数 task_switch()源码注释 ........................................................................89 Chapter 5 存储器源码分析........................................................104 5.1 IA-32 体系的存储器结构 ........................................................................................104 5.2 Bochs 对存储器的模拟............................................................................................105 5.3 存储器类 BX_MEM_C 部分源码分析...................................................................107 5.3.1 相关数据结构与类定义.............................................................................107 5.3.2 相关函数分析.............................................................................................108 5.3 模拟分页机制...........................................................................................................115 5.3.1 分页 (Paging)概述.....................................................................................115 5.3.2 页目录与页表.............................................................................................116 5.3.3 线形地址转换.............................................................................................117 5.3.4 实现分页机制的源码分析.........................................................................120 Chapter 6 系统板与外设模拟 ..................................................136 6.1 Bochs 系统板描述类 bx_pc_system_c ...................................................................136 6.1.1 类 bx_pc_system_c 功能概述 ....................................................................136 6.1.2 PC system 定时器管理...............................................................................136 Bochs 项目源码分析与注释 MAY 2006 Understanding the source code of bochs 6.1.3 类 bx_pc_system_c 源码分析与注释 ........................................................138 6.2 设备集合类 bx_devices_c........................................................................................146 6.2.1 类 bx_devices_c 成员变量分析.................................................................146 6.2.2 类 bx_devices_c 成员函数分析与注释 .....................................................149 6.2.3 设备的初始化.............................................................................................150 6.2.4 设备复位.....................................................................................................154 6.2.5 设备访问(读写)的处理.........................................................................155 6.2.6 已注册的 I/O handlers 和 IRQ 清单 ..........................................................159 6.3 定时器(PIT)类分析.............................................................................................166 6.3.1 类 bx_pit_c 概述.........................................................................................166 6.3.2 类 bx_pit_c 源码注释.................................................................................166 6.3.3 关于类 bx_virt_timer_c ..............................................................................173 6.4 IDE 设备...................................................................................................................173 6.4.1 磁盘控制器 controller_t .............................................................................173 6.4.2 IDE 驱动器描述类 bx_hard_drive_c .........................................................174 6.4.3 读写磁盘映象.............................................................................................175 6.4.4 ATA/IDE 控制器(通道)和设备初始化.................................................176 6.4.5 ATA 控制器的寄存器读写 ........................................................................184 6.4.6 CD ROM 设备............................................................................................193 6.5 PCI 子系统 ...............................................................................................................203 6.5.1 PCI 概述 .....................................................................................................203 6.5.2 PCI 主桥描述类 bx_pci_c 分析.................................................................209 6.6 VGA 设备模拟.........................................................................................................215 6.6.1 模拟 VGA 的类..........................................................................................215 6.6.2 VGA 在 svga_timer 中的更新 ...................................................................216 Appendix ...................................................................................217 Appendix A.Bochs 配置文本说明 ....................................................................................217 Appendix B.ATA 和 ATAPI 编程介绍.............................................................................225 Appendix C.Sound Blaster 16 编程...................................................................................230 Appendix D.VESA 编程介绍............................................................................................240 Appendix E.Bochs 上运行的操作系统示范.....................................................................261
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论