E:\test\easyVM_Small_
指令解析,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 未完成)相关推荐

  1. 性能测试小总结(四) 结果分析(未完成)

    结果分析 seleniumSelenium与QTP的比较 https://www.jianshu.com/p/593736bd44b3 Selenium web应用程序测试工具 功能 框架底层使用Ja ...

  2. heritrix源码分析(未完成。太长了!!)

    Heritrix源码分析(一) 包介绍  序号  包名                   说明 1 org.apache.commons.httpclient      封装了apache的http ...

  3. Python 分析国庆热门旅游景点,告诉你哪些地方好玩、便宜、人又少!

    作者 | 裸睡的猪 责编 | 屠敏 2019年国庆马上就要到来, 今年来点新花样吧, 玩肯定是要去玩的, 不然怎么给祖国庆生? 那去哪里玩?人少档次还高呢? 咱不是程序员嘛, 那就用数据分析下, 看看 ...

  4. 【舆情分析(4)】情感倾向分析之如何查看文章情感倾向变化趋势?

    1. 基本概念 情感倾向分析接口(通用版):对只包含单一主体主观信息的文本,进行自动情感倾向性判断(积极.消极.中性),并给出相应的置信度.为口碑分析.话题监控.舆情分析等应用提供基础技术支持,同时支 ...

  5. 用Python分析国庆旅游景点,告诉你哪些地方好玩、便宜、人又少

    点击上方"码农进阶之路",选择"设为星标" 回复"面经"获取面试资料 2019年国庆马上就要到来 猪哥今年想着来点新花样吧 玩肯定是要去玩的 ...

  6. 最强旅游攻略 | 用Python分析国庆中秋最佳旅游景点 (文末福利)

    作者 | 裸睡的猪 头图 | CSDN下载自视觉中国 文末福利,不要错过哦! 正文 2020年国庆中秋双节马上就要到来 昨天和朋友聊天: 我:"这8天你准备去哪里玩" 朋友:&qu ...

  7. Python告诉你这些旅游景点好玩、便宜、人又少!

    (图片由CSDN付费下载自东方IC) 作者 | 猪哥 来源 | 裸睡的猪(ID:IT--Pig) 2019年国庆马上就要到来, 今年来点新花样吧, 玩肯定是要去玩的, 不然怎么给祖国庆生? 那去哪里玩 ...

  8. 国赛数模2017B思路汇总第一部分(题目一)

    前言 笔者是在读本科生,尝试复刻数模国赛2017B题后,对国家一等奖论文做出总结,并说出自己的一些想法,以图提高自身建模水平. 原题 B题 "拍照赚钱"的任务定价 "拍照 ...

  9. EXCEL数据分析项目 - 商贸企业销售数据分析实战

    目录 一.前提信息 1 案例背景 2 项目目标 3 数据理解 二.总体分析 需求1 分析2020到2021年各类产品销售情况 需求2  分析2021年各地区的销售情况 需求3  2020年 - 202 ...

最新文章

  1. Reveal 的初步用法
  2. Android屏幕方向调整的两种方式
  3. wdcp查看mysql日志_查看修改服务器中的WDCP数据库操作记录
  4. LeetCode:Rotate Image
  5. Java中introduce方法_Java基础—继承
  6. mysql 可视化界面操作指令
  7. win7服务器未能登入,Win7提示profile服务未能登录,无法在系统中创建怎么办
  8. vim编辑器的基本使用
  9. POJ 2478:Farey Sequence
  10. 很全的C51库函数(IIC类)(IIC、EEPROM、ADXL、PCF、HMC、L3G、BMP)
  11. 朗文当代高级英语辞典android,朗文当代高级英语词典
  12. 90行代码爬取链家广州二手房相关信息
  13. VMware5.5-VMware补丁程序VUM
  14. 企业运维容器之 docker 安全
  15. WIN32 API串口通信编程
  16. 百度AICA迎来毕业季,55位新晋“首席AI架构师”推进产业智能化
  17. 尚邮——Wopus周六聚会大图分享(2009-12-28 11:50:01)
  18. OpenHarmony HDF Input框架模块 按键控制LED基于小熊派micro
  19. java计算机毕业设计线上花店购物商城源码+lw文档+系统+数据库
  20. PostgresConf.CNPGConf.Asia 2020五洲相会

热门文章

  1. 一个Java程序是怎样运行起来的【class解析全过程】
  2. 北京周末去哪儿 —— 玉渊潭
  3. R语言里面的循环变量
  4. 2018.12.15
  5. 专注力 化繁为简的惊人力量
  6. Ajax+Node.js前后端交互最佳入门实践(04)
  7. 【转】Python中设置输出文字的颜色
  8. echarts中如何使用timeline组件
  9. German Companies
  10. 提示JS错误:WebForm_PostBackOptions 未定义