CPU|为什么古早的电子游戏不能直接玩了?

CPU|为什么古早的电子游戏不能直接玩了?

文章图片

CPU|为什么古早的电子游戏不能直接玩了?

提到模拟器 , 你想的大概是用于玩其他平台游戏的东西 。 当然你那些个游戏绝对是合法渠道获取的 。 所以就是智能手机上的game boy模拟器 。 或者是电脑端的n64模拟器之类的 。 想要用特别的软件来跑这种游戏 , 好像是天经地义的事情 。 毕竟这种游戏当初就是为完全不同的硬件设计的 。 但是有一些老的电脑游戏 , 就算你用电脑运行 。 也必须要通过模拟器 。 当然现在的硬件比起20年前 , 速度快了不少 。 但多多少少还是有兼容的吧 。 所以为什么还要用?Dos box之类的程序来跑老游戏呢 。 为什么看似兼容的硬件也需要模拟器?

是这样子的 , 以前大多数电脑CPU和操作系统都是16位的构架 。 意思就是他们处理的都是16位长的数据 。 所以寻址的范围是all.乘以16个内存单位也就是64kb 。 这个容量显然不太够用 , 所以后来I386之类的处理器 。 就开始以32位计算了最多可以用到4GB内存 。 但是跑76位的老软件还是有一点麻烦 。 随着计算机进入32位时代 。 老城区面临着几个很大的问题 。 首先针对a架构编写的程序 , 无法在b架构的系统上延伸运行 。 也就是说如果不经修改 , 针对16位编写的程序 , 就无法在32位系统当中运行 。 其次 , 许多的16位DOS应用是以名为实模式的处理器模式运行的 , 这个模式允许任何程序访问任何内存空间 , 包括其他程序正在访问的内存空间 。

【CPU|为什么古早的电子游戏不能直接玩了?】显然这个实模式呢 , 有很实在的安全和稳定性问题 。 他没有任何的保护机制来确保恶意程序或者是bug的程序 。 不会访问无关内存 , 然后威胁数据安全 , 或者是把系统给搞崩 , 所以出现了一种新的处理器模式叫做保护模式 。 80年代中期保护模式成为了主流 , 他们有相互隔离的内存空间 , 通过给程序分配相应的优先等级 , 来避免设备驱动以及操作系统以外的程序 。 执行某些特定的指令 。 但是有很多的老程序只能在实模式下运行 。 而更新换代到32位又是大势所趋 。 那么新系统必须 。 以一个名为虚拟8086模式的特殊模式来虚拟16位实模式 。 创造出一个虚拟的实模式 , 真的是自相矛盾啊 。 和实现方式就是虚拟了一整颗爷爷级别的8086处理器 。 在很长的一段时间内 , 这个模式都是必不可少的 。 因为16位程序还很普遍 。

就连一些基于windows and乱七八糟的 。 也内置了名为ntvdm的模拟器来运行前代的DOS程序 。 所有的32位windows nt系统 。 高内置或者至少可以安装ntvdm或者是windows10 。 但是ntDVm也存在问题 。 比如刷新率很低 , 对音频的支持率很差 , 以及无法让现代的CPU降速运行 。 就会让游戏跑得太快 。 这依然无法解释 , 为什么现在电脑往往完全无法运行以前的DOS游戏 。 原来现在的电脑大多预装64位的操作系统 。 而非32位 。 主要是为了支持大于4G的内存 。 但是64位的操作系统是需要一种 。 全新的处理器模式的 , 它的名字叫做长模式 , 相应的微软也得写一个全新的软件 , 才能虚拟出16位的环境来跑那些很久以前的程序 。 32位计算晋升与主流的时候 。 16位程序依然还是很重要的 , 那个时候我们都还在用windows95之类的操作系统呢 。 但是放到现在16位程序可以说是彻底过时了 。 微软根本就懒得为此重写系统自带的模拟器 。 所以64位的windows系统就是不能原生运行很久以前的DOS程序 。 这就是为什么如果你想要在一台新电脑上玩怀旧的DOS游戏 。 就得装一个DOS box这样子的第三方模拟器 。 对此他们可比微软放心多了 。 而且专注于完善游戏知识 , 比起ntvdm更好用 。 而且不用钱 。