に影響は何ですか
- 移植性(呼び出し規約:CまたはOSライブラリ関数のみを呼び出す場合、LLVMレベルで本当に重要ですか)
- リンク時間
- 最適化
すべての難しい部分(最適化、オブジェクトコード生成)がすでに存在するため、LLVMを使用しておもちゃの言語をコンパイルしたいのですが、それが価値がある場合は維持したい概念に苦労しています:ライブラリファイルは再配布可能、静的および共有ライブラリとして使用可能(リンクの場合、共有の場合、最終的なアプリがリンクされたときに実際のsoまたはdllが生成されます)、ポータブル。これにより、コンパイル時間の一部が削減されると思います(ネイティブコードの生成とおそらく最適化は、最終的なバイナリリンク時に1回だけ実行されるため)。リンカが呼び出し規約(可能な場合)と、要求された場合は共有ライブラリへの変換を処理することを想定しています。広範囲にわたる追加では、おそらくLLVMを活用してリンクし、LLVM JITを使用して、生成されたバイトコードを直接実行し、コードを記述する際のリンク時間を完全に削除します。
この音は聞こえますか
- 実行可能ですか?
- 価値がある?C / C ++のリンク時間が比較的長いことは知っていますが、これは頻繁に再構築するときに問題になります。フリーリンク時間の最適化についてはどうでしょうか(cfr
/GL
と-flto
、本質的にLLVMバイトコードがリンクされ、ネイティブバイナリに変換されるため)。
これは漠然とした質問かもしれませんが、何か明確にする必要がある場合は、質問してください。