SPARC、IBM PowerPC用のアプリケーションを開発するには、x86およびx86-64ターゲット以外に、個別のコンパイラが必要ですか?
trueの場合、Linuxのx86、x64バイナリをSPARCおよびPowerPCに簡単に移植できますか?仮想化を使用してこれらの環境をシミュレートする方法はありますか?
SPARC、IBM PowerPC用のアプリケーションを開発するには、x86およびx86-64ターゲット以外に、個別のコンパイラが必要ですか?
trueの場合、Linuxのx86、x64バイナリをSPARCおよびPowerPCに簡単に移植できますか?仮想化を使用してこれらの環境をシミュレートする方法はありますか?
最初の答えは、はい、Power ArchitectureまたはSPARC用にコンパイルされたコードを開発するには、それらのプロセッサ用のコードを生成するコンパイラが必要です。x86またはx86_64コードを生成するコンパイラは、PowerArchitectureまたはSPARCで実行されるコードを生成しません。ただし、PowerまたはSPARCコードを生成するx86(32または64)で実行されているクロスコンパイラが見つかる場合があります。ただし、注意すべきもう1つの点は、オブジェクトファイルの形式(elf、xcoffなど)です。命令セットは画像の一部にすぎません。あなたがあなたの特定の出発点と目標のより多くの詳細を提供するならば、あなたはより明確な答えを得るかもしれません。
第二に、通常、バイナリの移植については話しません。ソースコードを移植します。これには、アセンブリ言語やCまたはその他の言語が含まれる場合があります。これを行うプロセスには、コンパイラの選択が含まれます。その後、新しいハードウェアのコードをコンパイル、移植、コンパイル、およびリンクする反復プロセスを開始できます。私は多くの詳細を省略しています。繰り返しになりますが、質問でより具体的な回答を提供すると、より具体的な回答が得られる可能性があります。
第三に、他の人が言っているように、いいえ、あなたがほのめかしているシナリオで仮想化を使用することはできません。許容できるエミュレーションソリューションが見つかるかもしれません。繰り返しになりますが、可能であれば、より詳細な情報を提供してください。
いいえ、仮想化は答えではありません。仮想化はハードウェアプラットフォームを利用して、同じハードウェアの独立した「仮想」マシンを作成します。したがって、x86で実行する場合は、仮想化を使用して2番目のx86マシンを作成します。
完全に異なるハードウェアアーキテクチャをシミュレートするには、エミュレーションを調べます。
あるアーキテクチャから別のアーキテクチャにソフトウェアを移植するのがどれほど簡単/難しいかは、ソフトウェアがどのように作成されたかに完全に依存します。一方のアーキテクチャに固有の何かを使用し、もう一方のアーキテクチャには使用しない場合(たとえば、x86は非整列メモリアクセスを処理できますが、SPARCは処理できません)、そのような問題を修正する必要があります。移植を困難にする可能性のある別の例は、ソフトウェアがハードウェアの特定のエンディアンを想定している場合です。
SPARC、IBM PowerPCには、x86およびx86-64ターゲット以外に、個別のコンパイラが必要ですか?
私は本当に気の利いたことを嫌いますが、IBM PowerPCとSPARCがx86またはx86-64コマンドセットをサポートしていないことを考えると(つまり、完全に別個のマシン言語を話します)、どこでそれらが互換性があると思いましたか?
仮想化を使用してこれらの環境をシミュレートする方法はありますか?
おそらくそうですが、マシンコードを翻訳するか、-まあ-解釈する必要があるため、非常に遅くなります。CPUアーキテクチャが異なる場合、ハードウェア仮想化は機能しません。SPARCとPowerPCは、単に「同じものに対して異なるラベル」であるだけでなく、内部的には実際には異なります。
JavaまたはLLVMを使用するか、 QEMUを試して他のCPUをテストしてください。
コードが移植可能であるように書かれていれば簡単ですが、そうでなければそうではありません。プラットフォームごとのデータ型のサイズとそれに依存するコード、インラインアセンブリなどは、それを難しくします。
LLVMおよびQEMUのホームページ: