ソフトウェア エンジニアリングにおいて、リターゲティングは、複数のコンピューティング プラットフォーム用のコードを生成するように特別に設計されたソフトウェア開発ツールの属性です。
コンパイラ
再ターゲット可能なコンパイラは、さまざまなCPU命令セット アーキテクチャ用のコードを生成するために比較的簡単に変更できるように設計されたコンパイラです。このアイデアの歴史は、 UNCOLが汎用中間言語として提案された1950 年代にまで遡ります。Pascal P コンパイラは、初期に広く使用されていた再ターゲット可能なコンパイラの一例です。
再ターゲット不可能なコンパイラ (つまり、単一のプロセッサ用のコードのみを生成するように設計されたコンパイラ) と同等の品質のコードを生成する再ターゲット可能なコンパイラを作成するコストは、コンパイルのすべてのフェーズで CPU 固有の詳細を利用することができないため、高くなります。再ターゲット可能なコンパイラの利点は、複数の CPU にわたる総コストが、多数の個別の非ターゲット可能コンパイラの合計コストよりもはるかに低いことです。
GCCなどの一部の再ターゲット可能なコンパイラは、非常に広く移植および開発され、現在では多くの最適化とマシン固有の詳細に対するサポートが含まれるようになり、多くの CPU 上でコードの品質が再ターゲット不可能なコンパイラの品質を上回ることがよくあります。
汎用グローバル オプティマイザに続いてマシン固有のピープホール最適化を行う手法は、一般的に使用されている実装手法です。[1] 一部の高性能プロセッサのコード最適化には、アーキテクチャと命令の実行方法に関する詳細かつ具体的な知識が必要です。開発者がアーキテクチャ専用のコード ジェネレータを作成するために必要な膨大な時間を費やさない限り、再ターゲット可能なコンパイラによって実行される最適化は、一般的なプロセッサ特性に適用できるものだけになります。
再ターゲット可能なコンパイラは、クロス コンパイラの一種です。多くの場合 (常にではありませんが)、再ターゲット可能なコンパイラは移植可能(コンパイラ自体が複数の異なる CPU で実行可能) かつ自己ホスティング可能です。
再ターゲット可能なコンパイラの例:
- 湾岸協力会議
- ACK
- LCCC
- VBCC
- ポータブル C コンパイラ
- サンディエゴ・コンベンション・センター
- LLVM
- Small- Cコンパイラ
- MPG、「マシンに依存しない効率的なマイクロプログラムジェネレータ」[2]
デコンパイラ
retdec ("Retargetable Decompiler") は、LLVMをベースにしたオープンソースの再ターゲット可能なマシンコードデコンパイラです。[引用が必要]
- デコンパイラは、特定のターゲット アーキテクチャ、オペレーティング システム、または実行可能ファイル形式に限定されません。
- サポートされているファイル形式: ELF、PE、Mach-O、COFF、AR (アーカイブ)、Intel HEX、および生のマシン コード。
- サポートされているアーキテクチャ (現在は 32 ビットのみ): Intel x86、ARM、MIPS、PIC32、および PowerPC。
アセンブラ
逆に、再ターゲット可能なアセンブラは、異なる形式のオブジェクト ファイルを生成することができ、同じCPU アーキテクチャ( x86プラットフォーム上のWindowsやLinuxなど)で実行されるさまざまなオペレーティング システムにアセンブリ言語プログラムを移植する場合に役立ちます。NASMはそのようなアセンブラの 1 つです。
さらに読む
- 再ターゲット可能な C コンパイラ: 設計と実装( ISBN 0-8053-1670-1 )
参考文献
- ^ Davidson と Fraser; 再ターゲット可能なピープホールオプティマイザの設計と応用; ToPLaS v2(2) 191-202 (1980 年 4 月)
- ^ Rainer Leupers、Peter Marwedel。「組み込みシステム向けの再ターゲット可能なコンパイラテクノロジ」。2001 年。( ISBN 0-7923-7578-5 ) p. 63。
外部リンク
- LANCEコンパイラのウェブサイト
- LLVMコンパイラインフラストラクチャのウェブサイト
- (オープンソースの) ACK SourceForge ページ
- Nils Weller の C コンパイラ ページ
- RetDec ウェブサイト
