模拟器研分析报告

模拟器研分析报告


2024年4月24日发(作者:什么牌子的u盘最好最耐用)

模拟器分析报告

模拟器是什么?

电脑上的模拟器是通过某种硬件或软件来模拟另外的硬件设备,或者通过某种硬件或软

件来模拟另外的软件。这仍然是一个太一般的定义,因为你可以模拟从一个OS(操作系统)

到一块声卡,并且所使用的技术是完全不同的。用某种硬件设备模拟其它硬件设备需要注意

的是与原始设备接收到同样的输入值时输出同样的值。这是电路或VLSI(超大规模集成电

路)设计上的任务。但是如果你用某种OS模拟另外一种OS是一个软件问题。

本报告谈论的都是计算机上的软件模拟器。软件计算机需要在一台电脑上使用软件模拟

另外一台真正的电脑中的所有成分。典型的计算机体系由一个或多个CPU,连接上面的设

备和内存的总线,以及内存和硬件设备组成,这些组件都需要由软件模拟。

模拟器的定义与虚拟机(virtual machines--VM)有关,比如Java虚拟机或其他的虚拟

机。虚拟机是任何不像真正的硬件一样存在的计算机,但是它在真正的计算机上被通过软件

实现。虚拟机的很多用途,比如代码简洁或者对软件隐藏了硬件的详细特征(例如OS对用

户程序提供了虚拟机)。当然虚拟机可以被用来在我们的计算机上模拟其它的计算机,所以

模拟器可以被看作虚拟机。

我们的模拟器的运行速度是非常重要的,因为电视游戏机和街机都是“实时机器”(游

戏运行依赖于时间),并且游戏程序员多次用到系统100%的运算能力。模拟器运行游戏时

速度必须和在原来的系统上一个样。这就意味着如果模拟器运行太快,它就必须与原始的速

度同步,如果运行太慢,就必须降低计算量来保证与被模拟机器的原始速度一样。对于计算

机模拟器,这个问题依赖于计算机所运行的程序类型,例如文字处理软件就不是实时程序,

而游戏是。

模拟器简史

可以说第一个模拟器是在第一台电脑被与它一致的新电脑代替的时候被创建的。老电脑

上的程序被移植到新的电脑上面,有很多种移植的方法:如果源代码可用,则在新机器上重

新编译,但由于机器间的差别,这并不总是很简单的任务;在新机器上重写应用程序;直接

将二进制程序翻译为新机器上的目标代码,同时调用翻译系统;最后就是编写旧机器的模拟

器,在新机器上运行。

符合我们定义的第一个模拟器是在60年代创作的IBM模拟器。

在以后的时间里,80年代后期和90年代初,随着RISC体系结构的提升,需要将旧的

CISC体系上的许多程序移植到新的RISC机器上。那时二进制翻译器被研究和制造出来执

行这个变化。

第一个被设计的模拟器是在90年代初被用于Amiga之类的系统,而且它们多多少少的

被使用了。但是那时的系统不够强大,不能使真正的模拟器全速运行,例如C64模拟器和

PC模拟器。

在90年代初,现在称之为“模拟器舞台”开始了。第一个模拟器是旧8-bit机器上的,

但是随着时间和PC性能的提升,现在有了32-bit和64-bit机器上的模拟器。

后来,模拟器和动态二进制翻译器随着新IA64体系和Crusoe的Transmeta处理器上的

动态翻译器的研究转移到了专业领域。

使用模拟器或二进制翻译器的商业产品有Ardi Executor,x86和FX!32上的MAC模

拟器,一个给人印象很深的Alpha NT上的x86 NT应用程序的翻译器。后来两个商业性质

的电视游戏机模拟器(都是模拟PSX)是Bleen Co.的Bleem和Connectix公司的Virtual Game

Station。Bleem是PC上的Sony Playstation模拟器,VGS是MAC和PC上的模拟器。模拟

私有系统是一个关系到反工程和多多少少一些法律问题的任务。

相关话题

模拟一台计算机是一个很困难的任务,因为这意味着需要有关于被模拟的计算机,目标

计算机和如何运行模拟器的所有方面的丰富的知识。

模拟器是基于图灵机背后的理论。图灵机对于建造模型很有用,使用数学理论,计算机

可以解决很多问题。这些问题或特性中的一个就是每个图灵机都有能力使用自己的资源“模

拟”其他图灵机的行为。因此模拟器就是基于图灵机的数学能力。

模拟直接与虚拟机的设计有关,比如Java模拟器可以被看作允许旧计算机的程序(对

于我们一般来说是电视机游戏)在我们现在的家用PC上运行的虚拟机的一种。许多可以是

虚拟机更快速更高效的设计和执行式的技术同样适用于模拟器的执行,在其他方面也一样使

用。随着Java越来越流行,人们对虚拟机的兴趣也提升了,它开始被用于在多种系统上运

行的程序,比如网页中的程序。

Java作为完整的虚拟机拥有使用字节码的虚拟处理器以及我们的模拟器观点很相近的

其他设备。事实上,Java VM可以被看作是一台没有真正硬件设备(存在可以直接执行Java

代码的IC,但那些事例外)但却有各种成分的“标准”机器。

例外一个与虚拟机相关的话题是仿真。存在或不存在硬件的仿真器被设计和使用以描绘

出系统内部如何工作的轮廓。这种轮廓的描绘使用真正的硬件不可能或非常难实现,所以用

软件仿真器,也可以被理解为更加精确的模拟器,对测试非常有用。

二进制译码器是可以被用来模拟CPU的技术之一。二进制译码器将可以在一个CPU上

直接运行的二进制代码翻译为可以在另一个CPU上运行的代码。这个过程与编译器的工作

过程很相似,只是这里的源代码是直接的机器代码。所以,虽然翻译和编译有很大的不同点,

但是许多编译理论中的技术可以被用于模拟器,或者修改后可以。

由于许多可以被模拟的计算机都是私有的,并且没有关于它们特征的免费信息,反向工

程就是被强迫使用的。这种情况下的反向工程可以从不同的观察点进行。硬件的反向工程,

比如使用计算机键盘表来发现一台计算机的内存镜像或使用哪种CPU。或者反向软件,以

知道计算机中程序运行时如何访问硬件。如果我们要模拟的系统还没有被模拟过,关于它的

信息非常少,那么反向工程就必须使用。

我们要模拟的系统有非常强的图形和声音处理能力,所以知道相关的知识是必需的。必

须知道被模拟的机器中图形系统如何工作,例如以前的街机和电视游戏机中的2D图形系统

与PC图形系统打不一样。这就意味着那些图形系统必须用软件模拟。以及如果目标处理器

中有可以被用于模拟的硬件,那么这个硬件就必须被认识,比如3D图形指令翻译的时候。

这些声音同样适用。产生声音的不同方法:例如FM合成以及PCM音频都必须用目标系统

中的硬件实现。

模拟既是计算机组成体系问题也是操作系统问题,因为理解模拟和执行模拟都需要这些

方面的知识,同样因为模拟也适用于这些领域。例如可以设计一个能够运行来源于不同机器

的程序的OS。这个OS必须能够检测出将要运行哪种类型的程序,然后使用正确的虚拟机

或模拟器来运行。同样可以认为在一个OS中提供有模拟所用的工具,例如MMU的直接接

口将对模拟内存很有用。

有两个关于模拟器的合法观点。执行一个模拟有版权的系统的模拟器是否合法,为一个

有版权的系统设计的游戏能否被在另外一个系统上使用和拷贝。后一个法律问题关系到储存

以前的游戏和程序的媒体能否在现代计算机上使用。例如,以前的电视游戏机和街机使用

ROM来储存游戏的数据和代码。这些ROM必须使用电子设备读取,存储在文件中。这些

文件就是模拟器输入程序中的一部分。拷贝和使用这些文件属于法律的灰色区域。

另外一个关于法律的方面是设计模拟器所需要的信息是如何获得的。由于这些信息是被

保护的,有些以前的系统有被保护的信息,但是时间过去了,虽然这些信息仍然被保护,但

它们可以被获得并且用来设计模拟器。在这种情况下,这些系统已经不再被使用,所以虽然

有法律限制,但是对于拥有所有权的公司的损害却是很低的。但有时在系统仍然存活的情况

下这些信息就被盗去并且公开。使用这些信息的模拟器就不能够被合法销售。另外一种获得

系统信息的方法就是反向工程。法律上关于反向工程的部分在这里仍然适用。


发布者:admin,转转请注明出处:http://www.yc00.com/xitong/1713960757a2353020.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信