我正在用 C# 编写自己的脚本语言,具有一些我喜欢的特性,并且我选择使用 MSIL 作为输出的字节码(Reflection.Emit 非常有用,我不必想出另一个字节码)。它可以工作,发出可执行文件,可以运行(甚至可以使用 Reflector 反编译 :))并且速度非常快。
但是 - 我想在一个进程+一个线程中运行多个“进程”,并手动控制它们分配的 CPU 时间(也实现由 .NET 框架提供的更强大的 IPC)有没有办法完全禁用 JIT 并创建自己的VM,使用.NET框架(并控制内存使用等)在指令后步进指令,无需自己编写任何东西,或者要实现这一点,我必须编写整个MSIL解释?
编辑 1): 我知道解释 IL 并不是世界上最快的事情:)
编辑2):澄清-我希望我的VM成为某种“操作系统”-它获得一些CPU时间并将其分配给进程,控制它们的内存分配等等。它不必很快,也不必有效,而只是我的一些实验的概念证明。我不需要在处理每条指令的级别上实现它 - 如果这应该由 .NET 完成,我不会介意,我只想说:第一步指令,等到我告诉你下一步。
编辑 3):我意识到,ICorDebug 可能可以满足我的需求,现在正在查看 Mono 运行时的实现。