开发SPARC,IBM power CPU的应用程序是否需要单独的编译器,而不是x86,x86-64目标?

时间:2010-07-14 17:22:08

标签: linux compiler-construction porting cpu-architecture

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

如果是的话,Linux中的x86,x64二进制文件可以轻松地移植到SPARC和PowerPC中吗?有没有办法使用虚拟化来模拟这些环境?

4 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:1)

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

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

将软件从一个架构移植到另一个架构是多么容易/困难,完全取决于软件的编写方式。如果它使用特定于一个体系结构而不是另一个体系结构的某些东西(例如,x86可以处理非对齐的内存访问而SPARC没有),那么您将需要修复这样的事情。另一个可能使端口难以移植的例子是,如果软件假设了硬件的特定端点。

答案 2 :(得分:1)

  SPARC,IBM PowerPC需要单独使用   除了x86和x86-64之外的编译器   目标

我讨厌非常狡猾,但考虑到IBM PowerPC和SPARC不支持x86或x86-64命令集(即完全独立的机器语言),你甚至在哪里知道它们是兼容的? / p>

  

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

可能是的,但它真的很慢,因为你必须翻译机器代码,或者 - 好 - 解释它。考虑到CPU架构不同,硬件虚拟化不起作用。 SPARC和PowerPC不仅仅是“同一事物的不同标签”,它们在内部确实不同。

答案 3 :(得分:0)

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

如果您的代码是可移植的,那就很容易了,如果不是,那就很容易了。每个平台的数据类型大小和依赖于它的代码,内联汇编等都会变得更加困难。

LLVM和QEMU的主页: