0

最近、アセンブリ言語全般に興味があります。そうするうちに、バイトコードの概念にも興味を持つようになりました。そのため、Microsoft の .NET を調べたときにかなり興味を持ったのですが、一種の疑似アセンブリを使用して独自のバイトコードを作成していることがわかりました。しかし、アセンブリ言語自体には本当に感銘を受けました。私には、一種のより高いレベルのアセンブリのように思えます。

私の質問は、JIT/解釈された.NETバイトコードではなく、コンパイルされたネイティブコードのように、これを純粋なアセンブリに実装できますか? そのような努力を試みることは賢明でしょうか? また、どのような利点があるでしょうか?

4

1 に答える 1

1

CIL をマシン固有のアセンブリに変換することは、ある程度可能です。

Marc Gravell はコメントで Mono AOT について言及していますが、これは 1 つのオプションです。Mono AOTページに記載されているように、完全な AOT (ランタイム IL 解釈をまったく使用しない) を使用する場合、できることとできないことにいくつかの制限があります。それ以外の場合は、機械語に変換できる IL があり、残りは実行時に通常どおりに解釈されます。

また、C# でオペレーティング システム全体を作成するCosmos プロジェクトによって作成され、Cosmos プロジェクトのために作成された IL2CPUもあります。ホスティング オペレーティング システムがなければ、.NET Framework も存在せず、IL をマシン コードに変換する以外に選択肢はほとんどありません。IL2CPU にも限界がありますが、完全なリストは知りません。

しかし、結局のところ、大部分の .NET プログラムにとって利点はほとんどありません。プログラムの実行速度が大幅に向上せず、プログラムのデバッグが困難になり (プログラムまたは IL トランスレータにバグがあるか?)、インストールに .NET Framework 自体の一部が含まれてしまう場合は、セキュリティ アップデートそれらのビットのコピーには適用しないでください。ですから、自分が何をしているのか本当にわかっていない限り、それをしないでください。

于 2012-08-12T10:12:50.453 に答える