私は C# で独自のスクリプト言語を作成しており、いくつかの機能を気に入っています。MSIL を出力のバイトコードとして使用することにしました (Reflection.Emit は非常に便利で、別のバイトコードを考える必要はありません)。それは機能し、実行可能ファイルを発行します。これは実行可能で (Reflector で逆コンパイルすることもできます:))、非常に高速です。
しかし - 1 つのプロセス + 1 つのスレッドで複数の「プロセス」を実行し、割り当てられた CPU 時間を手動で制御したい (.NET フレームワークによって提供されるより堅牢な IPC も実装する) JIT を完全に無効にして独自のプロセスを作成する方法はありますかVM、.NET フレームワーク (およびメモリ使用量の制御など) を使用した命令ごとのステップ実行、自分で何かを記述する必要なし、またはこれを達成するには、MSIL 解釈全体を記述する必要がありますか?
編集 1): IL の解釈は、宇宙で最速のものではないことを知っています :)
編集2):明確にするために-VMをある種の「オペレーティングシステム」にしたい-CPU時間を取得し、プロセス間で分割し、それらのメモリ割り当てを制御します。高速である必要も効果的である必要もありませんが、私の実験の概念実証にすぎません。すべての命令を処理するレベルでそれを実装する必要はありません。これを .NET で実行する必要がある場合は、気にしません。言いたいのは、1 つの命令をステップ実行し、次のステップを指示するまで待つことです。
編集 3): 私は、ICorDebug がおそらく私のニーズを達成できることに気付きました。今、Mono のランタイムの実装を調べています。