【问题标题】:Recompile executable from one platform to another将可执行文件从一个平台重新编译到另一个平台
【发布时间】:2014-04-23 05:13:38
【问题描述】:

似乎给出了针对任何两个平台的指令的完整参考,比如 x86 和 ARM,应该可以将针对第一个平台编译的程序转换为第二个平台。其中一个平台缺少的那些指令可以实现为一系列更原始的指令。最终,CPU 所做的是 I/O 和算术。如果是这样,为什么人们开发能够解释更高级别代码的模拟器,而不是开发允许二进制文件以目标平台的本机速度运行的指令翻译器?

【问题讨论】:

  • 通常很多其他的东西在系统之间会有所不同(缓存、内存保护单元、GPU、音频硬件等)。对于某些系统,在非常高的水平上模拟这些可能就足够了,但对于其他系统 - 特别是旧游戏机 - 您通常可以具有很强的时序敏感性(在水平停止期间写入 gpu 的循环计数代码来做光栅效果,仅举一个例子)。该方法还存在自修改代码的问题。无论如何,至少有一个使用静态重新编译的 N64 模拟器,并且在某些情况下可以工作。

标签: assembly compiler-construction cross-platform cpu-architecture


【解决方案1】:

它被称为二进制翻译,它在几个应用程序中完成。例如,英特尔执行为 ARM 编译的 Android 应用程序的二进制翻译。一些指令可以很容易地翻译,而另一些则需要更复杂的仿真。

【讨论】:

  • 感谢您命名确切的术语。现在更容易找到更多信息。
  • 另一种搜索这种静态二进制翻译的方法是...静态...不是运行代码而是分析和转换。动态二进制翻译是在运行程序时有时会进行部分转换,而不是尝试全部转换。每种方法都有其优点和缺点。
  • 关于英特尔执行的二进制翻译:你有解释的链接吗?
猜你喜欢
  • 1970-01-01
  • 2014-01-31
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多