LLILC-MSILからMicrosoft LLVMバイトコードトランスレータ

本日、マイクロソフトの従業員プロジェクトを発表しました LLILC-これまで主にインフラストラクチャ向けに設計された、MSILをLLVMバイトコードに変換するための新しいプロジェクト CoreCLR 近い将来、JITコンパイルに使用できるようになり、後に.NETネイティブツールを使用してプリコンパイルされたアセンブリ(Ahead-of-Time)を作成できるようになります。



CoreCLRには既に独自のJITがありますが、LLVMによりさまざまなプラットフォームのサポートを拡大する予定です。 新しいJITは、RyuJITと同じ内部APIセットを使用し、シームレスに置き換えます。 したがって、新しいJITにより、.NETコードは、CoreCLRを移植できるすべてのサポートされているLLVMプラットフォームで実行できます。



現時点では、この実装により、CoreCLRメソッドの約90%をコンパイルし、それ以外の場合はRyuJITにロールバックできますが、CoreCLRで提供されるテストは、Windowsプラットフォームでの起動時にすでに合格しています。 これは、通常のCLRサポート用のLLVMが何らかの仕上げ作業(独自の力で実行される)を必要とし、それなしでは不可能であるという事実も原因です。



現時点でのプロジェクトのステータスは、MonoのLLVMサポートレベルに似ています。 LLVMにパッチを適用し 、メソッドの一部のみをコンパイルすることもできます(Monoでは、try / catchコンストラクトとインターフェイスメソッドの呼び出しが利用可能な場合、通常のコンパイルバックエンドへのロールバックが発生します)。



既存のプロジェクトに注目する価値もあります SharpLang。LLVMバイトコード内でMSILを含むコンパイル済みDLLを転送します 。 それは、そのカット実行時間とともに生きるという点で異なります。



All Articles