Emulator and Virtual Machine

《Emulator and Virtual Machine》

 

原文出处:http://www.tuicool.com/m/articles/2EFJVf

模拟器是什么
Emulator,中文一般译为模拟器。但实际上这个翻译是错误的,准确的翻译是仿真器。仿真器与模拟器的区别在于:前者是用软件实现硬件的行为,而后者仅仅是使某一软件的运行和输出在不同平台上没有太大区别。举个例子,如果在某个街机上有一个游戏软件需要在PC平台运行,仿真需要做的是在PC平台上实现一个软件能正确的完成街机硬件的功能,从而使游戏软件可以不进行任何修改的在这个PC平台上实现的软件上运行;而模拟需要做的是修改该游戏的源代码,从而使得游戏可以在PC上编译运行,只要该戏的画面和输出与街机上没有太大区别就可以,也就是所谓的移植。

 

仿真器与虚拟机的区别
简单的说,仿真器和虚拟机(Virtual Machine)几乎没有区别,至少实现方式是类同的。两者都是将被仿真平台(比如某一街机)上的机器码转译成目标平台(比如PC)上的机器码。当然一般情况下不需要做到精确仿真,甚至更夸张的晶体管级别的仿真,只需要做到指令级别的CPU仿真以及保证时序正确就可以,当然也包括图像和声音处理。一些高级的主机并不需要精确的时序,但需要正确的实现该高级主机的BIOS调用,OS API,GPU指令(如果有的话),甚至驱动等等。

 

 

仿真器或虚拟机的实现方法
实现方法主要就是将被仿真平台的CPU指令转译成目标平台的CPU指令。最简单的就是Interpreter(解释器),主要方法就是边转译边执行指令。速度更快的实现方式为Dynamic Compilation(动态编译),主要方法是先转译再执行指令。动态编译也有许多类似的名称,如Dynamic Recompilation(动态重编译,简写为Dynarec),Dynamic Binary Translation(动态二进制转译),Just-In-Time Compilation(即时编译)等等。
另一种追求速度的实现方式是高级仿真(high-level emulation,简写为HLE)。其实现方式是利用平台的相似性,如被仿真平台和PC都使用OpenGL作为图形API,或者被仿真平台的图形API实现和OpenGL API很类似,那么就可以简单的利用OpenGL API来替换被仿真平台的图形API。这种方式会较大的提高运行速度,但也降低了精确度。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值