是否针对多种架构编译了游戏/程序?

时间:2013-11-23 22:21:41

标签: compilation computer-architecture

这可能是一个广泛而有点愚蠢的事情,但这是我从未理解过的事情。

我从来没有处理过除了Java之外需要编译的代码,我猜这些代码介于两把椅子之间,所以这里就是这样。

我不明白游戏和程序是如何编译的。它们是针对多种架构编译的吗?或者它们是在安装过程中编译的(看起来不是这样)?

据我所知,代码需要根据本地架构进行编译才能使其正常工作。这意味着您无法为AMD编译内容并“复制”二进制文件并在运行Intel(或类似版本)的计算机上执行它们。

这里有什么我误解的,或者他们使用的方法与我提出的例子有什么不同?

1 个答案:

答案 0 :(得分:1)

AMD和英特尔都是制造商。你可能会想到amd64(也称为x86_64)与x86。顾名思义,x86_64基于x86。

运行64位x86_64操作系统的计算机通常可以运行x86应用程序,但反之则不然。因此,一种可能性是发布32位x86游戏,但这限制了每个进程可以访问的RAM量。这对游戏来说可能没问题。


更大的问题是针对不同的平台发货,例如Playstation和(Windows)PC。 Playstation不仅具有完全不同的CPU架构(Cell),而且是一个不同的操作系统。

在这种情况下,您不能简单地交叉编译 - 这是因为操作系统的差异。你必须有两个不同版本的游戏 - 共享一堆公共代码和媒体文件(也称为资产) - 一个版本用于PC,一个版本用于Playstation。

理论上你可以使用Java来克服这个问题......但这只适用于所有目标平台都有JVM的情况。此外,Java市场现在存在碎片,例如Android支持JME的不同API。而且iPhone和iPad根本不支持Java。

许多游戏发行商实际上并不使用Java。 Mojang是一个例外。