10

CLI (共通言語インフラストラクチャ) を使用して (たとえば、.NET 自体を使用して) 実装された .NET 互換の CLR があるかどうか、または少なくともそれを構築するのに役立つリソースがあるかどうか疑問に思っていました。

基本的には、アセンブリを MemoryStreams として読み込み、バイトコードを解析し、型を構築し、命令を実行する .NET プログラムのようなものです。オプションで、Reflection.Emit を使用して標準 IL に JIT コンパイルすることもできます。

元の CLR で実行される .NET 言語をコンパイルしたくありません。.NET 言語(通常のアンマネージ C++ や C ではない)で記述され、 CIL実行する CLR が必要です。正しく行われれば、それ自体を実行できるはずです。

この種のものに Mono.Cecil を使用することについて何か考えはありますか?

4

6 に答える 6

5

現在、自己ホスト型のスタンドアロン .net VM はないと思いますが、CosmosSharpOSはどちらも C# で記述された .net ランタイムです。

ランタイム コードの一部を再利用して、スタンドアロン ランタイムを追加できる可能性があります。Cosmos を使用して、起動時にカスタム アプリケーションをホストできます: http://www.codeproject.com/KB/system/CosmosIntro.aspx

于 2008-09-30T03:21:04.347 に答える
4

IKVM.NET Projectを確認してください。.NET で記述された Java 仮想マシンが含まれています。

http://www.ikvm.net/

CLRの上で実行されるのは実際のCLRではないことは知っていますが、私が知っている限り、あなたが望むことを行うのに最も近いものです。

于 2008-09-30T02:18:46.227 に答える
1

私は1つを認識していませんが、JVMで実行されているJVMからのアイデアは役立つはずです。

于 2008-09-30T00:43:22.777 に答える
1

技術を組み合わせることで、原則として可能です。

  • Jikes RVMは、Java で書かれた Java 仮想マシンの実装です。
  • .NET 上の Java プラットフォームの実装であるIKVM.NET 。

Monoを使用して LLVM バイトコードにコンパイルし、Emscriptenを使用してバイトコードを Javascript にコンパイルし、さまざまなインタープリターを使用して .NET で Javascript を実行することも可能です。

于 2012-07-20T06:47:08.897 に答える
1

「CIL を実行する」の定義を「CIL をネイティブ コードに JIT コンパイルする」に拡張したい場合は、マネージド オペレーティング システム アライアンス(マネージド オペレーティング システム アライアンス) を検討する必要があります。管理されたオペレーティング システム カーネルを作成するために必要な部分。

現在、やるべきことはかなり残っていますが、単純なメソッドを JIT コンパイルして実行することは可能です (Win32 のみ -- 現在、P/Invoke を使用してネイティブ コード バッファーを作成しています)。

于 2008-09-30T01:08:19.783 に答える
-2

System.Reflection.Emit 名前空間、具体的には ILGenerator クラスを見てください。

その場で IL を放出できます。

http://msdn.microsoft.com/en-us/library/system.reflection.emit.ilgenerator_members.aspx

于 2008-09-30T00:31:48.403 に答える