質問
.NET自体を使用するなど、CLIを使用して実装された.NET互換のCLRがあるかどうか、または少なくともリソースがある場合は、構築に役立ちます。
基本的に、アセンブリをMemoryStreamとしてロードし、バイトコードを解析し、型を構築し、命令を実行する.NETプログラムのようなもの。オプションで、Reflection.Emitを使用して標準のILにJITコンパイルできます。
.NET言語を元のCLRで実行するようにコンパイルしたくない。 .NET言語で作成されたCLMが必要です。(通常はアンマネージC ++またはCではありません) CILを実行 します。正しく行われていれば、それ自体を実行できるはずです。
Mono.Cecilをこの種のものに使用することについて考えていることはありますか?
解決
現在、セルフホスティングしているスタンドアロンの.net VMは存在しないと思いますが、 Cosmos と< a href = "http://sharpos.org" rel = "noreferrer"> SharpOS は、C#で記述された.netランタイムです。
一部のランタイムコードを再利用して、スタンドアロンランタイムを追加することができます。 Cosmosを使用して、起動時にカスタムアプリケーションをホストできます: http://www.codeproject.com /KB/system/CosmosIntro.aspx
他のヒント
IKVM.NETプロジェクトをご覧ください。 .NETで記述されたJava仮想マシンが含まれています。
CLRの上で実行されるのは実際のCLRではないことは知っていますが、それがあなたが望むことを行うことを知っている最も近いものです。
「CILを実行」の定義を拡大する場合は、 「JIT-CILをネイティブコードにコンパイルする」、次に、 Managed Operating System Alliance をご覧ください。管理対象オペレーティングシステムカーネルの記述に必要なランタイムピースの作成に向けて。
現在、やるべきことはかなりありますが、単純なメソッドをJITコンパイルして実行することは可能です(Win32のみ-現在、P / Invokeを使用してネイティブコードバッファーを作成しています)
原則として、テクノロジーを組み合わせることで可能です:
Mono を取得して、LLVMバイトコードにコンパイルし、 Emscripten を使用してバイトコードをJavascriptにコンパイルし、さまざまなインタープリターを使用して.NETでJavascriptを実行します。
System.Reflection.Emit名前空間、特にILGeneratorクラスを見てください。
その場でILを放出できます。
http://msdn.microsoft.com /en-us/library/system.reflection.emit.ilgenerator_members.aspx