3

为SPARCIBM PowerPC开发应用程序是否需要单独的编译器,而不是 x86 和 x86-64 目标?

如果属实,Linux 中的 x86、x64 二进制文件移植到 SPARC 和 PowerPC 有多容易?有没有办法使用虚拟化来模拟这些环境?

4

4 回答 4

5

第一个答案是,是的,要为 Power Architecture 或 SPARC 开发编译代码,您需要能够为这些处理器生成代码的编译器。生成 x86 或 x86_64 代码的编译器不会生成在 Power Architecture 或 SPARC 上运行的代码。不过,您可能会发现在 x86(32 或 64)上运行的交叉编译器会生成 Power 或 SPARC 代码。但要注意的另一件事是目标文件格式(elf、xcoff 等)。指令集只是图片的一部分。如果您提供有关特定起点和目标的更多详细信息,您可能会得到更清晰的答案。

其次,通常不会谈论移植二进制文件。我们移植源代码,其中可能包括汇编语言以及 C 或其他语言。执行此操作的过程包括编译器选择,之后您可以开始为新硬件编译、移植、编译和链接代码的迭代过程。我省略了很多细节。同样,如果您在问题中提供更多细节,您可能会得到更具体的答案。

第三,正如其他人所说,不,您不能在您提到的场景中使用虚拟化。您可能会找到可接受的仿真解决方案。再次,如果可以,请提供更多细节。

于 2010-07-15T05:34:28.390 回答
1

不,虚拟化不是答案。虚拟化采用您的硬件平台并创建相同硬件的独立“虚拟”机器。因此,在 x86 上运行时,您使用虚拟化来创建第二台 x86 机器。

要模拟完全不同的硬件架构,您需要研究emulation

将软件从一种架构移植到另一种架构的难易程度完全取决于软件的编写方式。如果它使用特定于一种架构而不是另一种架构的东西(例如,x86 可以处理非对齐的内存访问,而 SPARC 不能),您将需要修复类似的东西。另一个可能使移植变得困难的例子是,如果软件假定了硬件的特定字节序。

于 2010-07-14T17:48:34.823 回答
1

SPARC、IBM PowerPC 需要单独的编译器,而不是 x86 和 x86-64 目标?

我真的很讨厌,但是考虑到 IBM PowerPC 和 SPARC 不支持 x86 或 x86-64 命令集(即完全独立的机器语言),你从哪里得到它们会兼容的想法?

有没有办法使用虚拟化来模拟这些环境?

可能是的,但它真的很慢,因为您必须翻译机器代码,或者 - 好吧 - 解释它。鉴于 CPU 架构不同,硬件虚拟化将无法​​工作。SPARC 和 PowerPC 不仅仅是“同一事物的不同标签”,它们在内部确实不同。

于 2010-07-14T17:51:52.710 回答
0

使用 Java 或LLVM,或尝试QEMU来测试其他 CPU。

如果您的代码被编写为可移植的,这很容易,如果不是,则不是。每个平台和依赖于它的代码、内联汇编等不同大小的数据类型将使其变得更加困难。

LLVM 和 QEMU 的主页:

于 2010-07-14T17:28:52.533 回答