2010-07-14 16 views

回答

5

第一個回答是,是爲Power Architecture或SPARC開發編譯代碼,您需要編譯器來爲這些處理器生成代碼。生成x86或x86_64代碼的編譯器不會生成在Power Architecture或SPARC上運行的代碼。儘管如此,您可能會發現運行在x86(32或64)上的交叉編譯器會生成Power或SPARC代碼。但要注意的另一件事是對象文件格式(elf,xcoff等)。指令集只是圖片的一部分。如果您提供了有關您的特定起點和目標的更多細節,您可能會得到更清晰的答案。

其次,通常不會談論移植二進制文件。我們移植源代碼,其中可能包括彙編語言以及C或其他語言。這樣做的過程包括編譯器選擇,之後您可以開始編譯,移植,編譯和鏈接新硬件代碼的迭代過程。我省略了許多細節。再一次,如果你在你的問題中提供了更多細節,你可能會得到更具體的答案。

第三,正如其他人所說的,不,你不能在你提到的場景中使用虛擬化。你可能會找到可接受的仿真解決方案如果可以,請再次提供更多細節。

+0

嗨,細節:我們正在尋找在Linux上爲傳統Windows應用程序(c,C++)開發新組件(C++)。該API採用C語言,要求是Linux,Solaris和AIX。今天我們的Dev Env是MS VS2008。任何反饋表示讚賞,謝謝 – maruti 2010-07-15 09:51:19

+0

因此,你有傳統的Windows應用程序的源代碼?這款傳統應用需要在Linux,Solaris和AIX上運行,還是需要在Windows計算機上運行,​​並且可以從其他平臺遠程進行通信? – 2010-07-16 14:53:24

+0

舊版應用程序(服務器)在Windows上運行,需要與Linux,Solaris(客戶端)上的新代碼進行通信。 C,C++ API – maruti 2010-07-17 12:38:50

0

使用Java或LLVM或嘗試QEMU來測試其他CPU。

如果您的代碼被編寫爲可移植,那很簡單,如果不是,那就不是。不同規模的數據類型以及依賴於它的平臺和代碼,內聯彙編等將使其變得更加困難。針對LLVM和QEMU

主頁:

+1

指針運算通常是便攜式的。將它與彙編語言一起分類是荒謬的。 – 2010-07-14 17:34:23

+0

嘿,我沒有經歷過這個東西。這對於32位和64位來說是個問題嗎? – gtrak 2010-07-14 18:36:15

+0

這看起來很不錯,選擇一種可移植的語言,如果還沒有需要在新平臺上運行的大量代碼,即如果重寫或從頭開始,那麼可能有語言選擇,但是當遺留代碼時,它可能是不可能的。 – 2010-07-15 05:15:59

1

沒有,虛擬化也不是辦法。虛擬化需要您的硬件平臺,並創建一個具有相同硬件的獨立「虛擬」機器。因此,在x86上運行時,您可以使用虛擬化來創建另一臺x86計算機。

要模擬完全不同的硬件體系結構,您需要查看emulation

將軟件從一種架構移植到另一種架構有多容易/難以完全取決於如何編寫軟件。如果它使用特定於某個體系結構但不是其他體系結構的東西(例如,x86可以處理非對齊的內存訪問,而SPARC不支持),則需要修復這些問題。另一個可能會導致難以移植的例子是,如果軟件假定了硬件的特定的endian-ess。

1

SPARC,PowerPC的IBM需要單獨 依從者,比其他的x86和x86-64 目標?

我討厭要真正snippy,但鑑於IBM PowerPC和SPARC不支持x86或x86-64的命令集(即說話完全分離機的langauge),你在哪裏,甚至有想法,他們將兼容?

有沒有辦法用虛擬化來模擬這些 環境?

可能是的,但它會非常慢,因爲你將不得不翻譯機器代碼,或者 - 很好地解釋它。鑑於CPU體系結構不同,硬件虛擬化將無法​​正常工作。 SPARC和PowerPC不僅僅是「同一事物的不同標籤」,它們在內部是非常不同的。

+0

嗨,湯姆,感謝你的迴應,沒關係snippy :)。我知道CPU是不同的,但我的同事建議虛擬化作爲答案,因此問題 – maruti 2010-07-15 09:47:17

+0

然後你的同事是「錯誤的」。大多數虛擬化依賴於硬件支持 - 這意味着「相同的芯片組」。這是一些解釋/模擬另一個CPU(蘋果公司在一年前從摩托羅拉轉移到PowerPc時),但開銷通常很大 - 並非真正的解決方案。 – TomTom 2010-07-15 10:07:07

相關問題