10

我想知道是否有使用 CLI(公共语言基础结构)实现的与 .NET 兼容的 CLR,例如,使用 .NET 本身,或者至少是否有任何资源可以帮助构建一个。

基本上,类似于 .NET 程序将程序集作为 MemoryStreams 加载、解析字节码、构造类型并执行指令。或者,它可以使用 Reflection.Emit 或然而 JIT 编译为标准 IL。

我不想编译由原始 CLR 运行的 .NET 语言。我想要一个用 .NET 语言(不是通常的非托管 C++ 或 C)编写运行CIL 的 CLR。如果操作正确,它应该能够自行运行。

对使用 Mono.Cecil 做这种事情有什么想法吗?

4

6 回答 6

5

我认为目前没有任何独立的.net VM 是自托管的,但CosmosSharpOS都是用 C# 编写的.net 运行时。

It may be possible to reuse some of their runtime code to extra a standalone runtime. Cosmos can be used to host a custom application on boot: http://www.codeproject.com/KB/system/CosmosIntro.aspx

于 2008-09-30T03:21:04.347 回答
4

您应该查看IKVM.NET 项目。它包括一个用 .NET 编写的 Java 虚拟机。

http://www.ikvm.net/

我知道它不是在 CLR 之上运行的实际 CLR,但它是我所知道的最接近你想要的东西。

于 2008-09-30T02:18:46.227 回答
1

我不知道,但是在 JVM 上运行的 JVM 的想法应该会有所帮助。

于 2008-09-30T00:43:22.777 回答
1

如果您愿意将“运行 CIL”的定义扩展为“JIT-Compiles CIL to Native Code”,那么您应该看看托管操作系统联盟——一群致力于创建运行时的人(包括我自己)编写托管操作系统内核所必需的部分。

目前,还有很多工作要做,但可以 JIT 编译和运行简单的方法(仅限 Win32——我们目前使用 P/Invoke 创建本机代码缓冲区)

于 2008-09-30T01:08:19.783 回答
1

It is possible in principle by combining technologies:

  • Jikes RVM is a Java Virtual Machine implementation written in Java.
  • IKVM.NET, an implementation of the Java platform on .NET.

It might also be possible to take Mono, compile to LLVM bytecode, compile the bytecode to Javascript using Emscripten, and run the Javascript on .NET using any of various interpreters.

于 2012-07-20T06:47:08.897 回答
-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 回答