【发布时间】:2014-04-23 05:13:38
【问题描述】:
似乎给出了针对任何两个平台的指令的完整参考,比如 x86 和 ARM,应该可以将针对第一个平台编译的程序转换为第二个平台。其中一个平台缺少的那些指令可以实现为一系列更原始的指令。最终,CPU 所做的是 I/O 和算术。如果是这样,为什么人们开发能够解释更高级别代码的模拟器,而不是开发允许二进制文件以目标平台的本机速度运行的指令翻译器?
【问题讨论】:
-
通常很多其他的东西在系统之间会有所不同(缓存、内存保护单元、GPU、音频硬件等)。对于某些系统,在非常高的水平上模拟这些可能就足够了,但对于其他系统 - 特别是旧游戏机 - 您通常可以具有很强的时序敏感性(在水平停止期间写入 gpu 的循环计数代码来做光栅效果,仅举一个例子)。该方法还存在自修改代码的问题。无论如何,至少有一个使用静态重新编译的 N64 模拟器,并且在某些情况下可以工作。
标签: assembly compiler-construction cross-platform cpu-architecture