分析easyVM 未完成)
指令解析,cpu虚拟
设备虚拟,比如display, DMA, floppy, harddisk, keyboard, PIC, printer, RTC, timer,serial
程序flow, 架构
低调发布easyVM 0.2版
简介:
====================
easyVM是一个简单的虚拟机。
0.1版本只支持8086指令集和一些简单的I/O设备,只支持英文文本显示方式。
0.2版本主要是在0.1版基础上加了一小部分32位指令(push eax等),使得easyVM可以运行MS-DOS 6.22自带的大部分程序。
文件说明:
====================
Bios\Bios.bin Bios程序
Bios\BiosData.bin CMOS数据区
DOS.IMG MS-DOS 6.22的镜像
easyVM.exe easyVM主程序
easyVM.ini easyVM的配置文件
Readme.txt 本说明文本
TC.IMG 含有Trubo C 2.0的软盘镜像
Dos622c.img 硬盘镜像
easyVM.ini配置文件
[Memory]
;MB
Size=32
[IMG]
A=DOS.IMG
B=TC.IMG
C=
cylinders=20
heads=16
spt=63
[Boot]
Boot=A
程序流程:
WinMain
VMInit
CPUInit
设置cpu从eCPU.cs=0xf000;eCPU.ip=0xfff0;开始执行
初始化InTable,和outTable
malloc memory for MemoryStart
read BIOS\\BiosData.bin to MemoryStart+0x400, size=0x100
set boot drive
*(char *)(MemoryStart+0x0400+0x0100)=0 for A
*(char *)(MemoryStart+0x0400+0x0100)=1 for B
read BIOS\\BIOS.bin to MemoryStart+0xf0000, size=
DispInit
PICInit();
RTCInit();
FloppyInit();
HardDiskInit();
DMAInit();
PrinterInit();
SerialInit();
KeyBoardInit();
SystemTimerInit();
VMRun
CPURun:里面用一个for不断执行
ExecIns
根据当前ip:evIP得到内存中当前指令OpC
从InsTable[Opc]得到指令对应的函数的地址
执行该函数
RefreshVideoRAM
VMShutDown
CPUTerminate
cpu虚拟主要文件为cpu/cpu.cpp, cpu/instructions.cpp
struct CPU 定义了cpu的所有寄存器
SetupInstructionTable用于设置InsTable,
消息响应,比如键盘,WM_PAINT等,在WndProc函数中(IO\Display.cpp)定义
对于显示模块, 用了一条IO指令来代替整个INT 10H(out 0b0h,al. 在easyvmBIOS.asm说明),INT10H的具体程序在Display.cpp里实现,
函数IO_Write_00B0
OnPaint
TextBufOut
根据不同字符属性,将显存缓冲分成多个子字符串,分别显示
画光标
转载于:https://www.cnblogs.com/cutepig/archive/2009/10/01/1577146.html
分析easyVM 未完成)相关推荐
- 性能测试小总结(四) 结果分析(未完成)
结果分析 seleniumSelenium与QTP的比较 https://www.jianshu.com/p/593736bd44b3 Selenium web应用程序测试工具 功能 框架底层使用Ja ...
- heritrix源码分析(未完成。太长了!!)
Heritrix源码分析(一) 包介绍 序号 包名 说明 1 org.apache.commons.httpclient 封装了apache的http ...
- Python 分析国庆热门旅游景点,告诉你哪些地方好玩、便宜、人又少!
作者 | 裸睡的猪 责编 | 屠敏 2019年国庆马上就要到来, 今年来点新花样吧, 玩肯定是要去玩的, 不然怎么给祖国庆生? 那去哪里玩?人少档次还高呢? 咱不是程序员嘛, 那就用数据分析下, 看看 ...
- 【舆情分析(4)】情感倾向分析之如何查看文章情感倾向变化趋势?
1. 基本概念 情感倾向分析接口(通用版):对只包含单一主体主观信息的文本,进行自动情感倾向性判断(积极.消极.中性),并给出相应的置信度.为口碑分析.话题监控.舆情分析等应用提供基础技术支持,同时支 ...
- 用Python分析国庆旅游景点,告诉你哪些地方好玩、便宜、人又少
点击上方"码农进阶之路",选择"设为星标" 回复"面经"获取面试资料 2019年国庆马上就要到来 猪哥今年想着来点新花样吧 玩肯定是要去玩的 ...
- 最强旅游攻略 | 用Python分析国庆中秋最佳旅游景点 (文末福利)
作者 | 裸睡的猪 头图 | CSDN下载自视觉中国 文末福利,不要错过哦! 正文 2020年国庆中秋双节马上就要到来 昨天和朋友聊天: 我:"这8天你准备去哪里玩" 朋友:&qu ...
- Python告诉你这些旅游景点好玩、便宜、人又少!
(图片由CSDN付费下载自东方IC) 作者 | 猪哥 来源 | 裸睡的猪(ID:IT--Pig) 2019年国庆马上就要到来, 今年来点新花样吧, 玩肯定是要去玩的, 不然怎么给祖国庆生? 那去哪里玩 ...
- 国赛数模2017B思路汇总第一部分(题目一)
前言 笔者是在读本科生,尝试复刻数模国赛2017B题后,对国家一等奖论文做出总结,并说出自己的一些想法,以图提高自身建模水平. 原题 B题 "拍照赚钱"的任务定价 "拍照 ...
- EXCEL数据分析项目 - 商贸企业销售数据分析实战
目录 一.前提信息 1 案例背景 2 项目目标 3 数据理解 二.总体分析 需求1 分析2020到2021年各类产品销售情况 需求2 分析2021年各地区的销售情况 需求3 2020年 - 202 ...
最新文章
- Reveal 的初步用法
- Android屏幕方向调整的两种方式
- wdcp查看mysql日志_查看修改服务器中的WDCP数据库操作记录
- LeetCode:Rotate Image
- Java中introduce方法_Java基础—继承
- mysql 可视化界面操作指令
- win7服务器未能登入,Win7提示profile服务未能登录,无法在系统中创建怎么办
- vim编辑器的基本使用
- POJ 2478:Farey Sequence
- 很全的C51库函数(IIC类)(IIC、EEPROM、ADXL、PCF、HMC、L3G、BMP)
- 朗文当代高级英语辞典android,朗文当代高级英语词典
- 90行代码爬取链家广州二手房相关信息
- VMware5.5-VMware补丁程序VUM
- 企业运维容器之 docker 安全
- WIN32 API串口通信编程
- 百度AICA迎来毕业季,55位新晋“首席AI架构师”推进产业智能化
- 尚邮——Wopus周六聚会大图分享(2009-12-28 11:50:01)
- OpenHarmony HDF Input框架模块 按键控制LED基于小熊派micro
- java计算机毕业设计线上花店购物商城源码+lw文档+系统+数据库
- PostgresConf.CNPGConf.Asia 2020五洲相会