基本信息
源码名称:Bochs项目源码分析与注释.pdf
源码大小:2.22M
文件格式:.pdf
开发语言:C/C++
更新时间:2021-01-25
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
开源虚拟机源码分析
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