是否有一个在CLR上运行的CLR?

发布于 2024-07-05 16:10:42 字数 421 浏览 9 评论 0原文

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

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

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

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

I was wondering if there was a .NET-compatible CLR that was implemented using the CLI (common language infrastructure), e.g., using .NET itself, or at least if there were any resources that would help with building one.

Basically, something like a .NET program that loads assemblies as MemoryStreams, parses the bytecode, constructs the types, and executes the instructions. Optionally, it can JIT-compile to standard IL using Reflection.Emit or however.

I don't want to compile a .NET language to be run by the original CLR. I want a CLR that's written in a .NET language (not unmanaged C++ or C as it usually is) and runs CIL. If done right, it should be able to run itself.

Any thoughts on using Mono.Cecil for this kind of thing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

原野 2024-07-12 16:10:42

查看 System.Reflection.Emit 命名空间,特别是 ILGenerator 类。

您可以即时释放 IL。

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

Look at the System.Reflection.Emit namespace, specifically the ILGenerator class.

You can emit IL on the fly.

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

被你宠の有点坏 2024-07-12 16:10:42

原则上通过组合技术是可能的:

  • Jikes RVM 是用 Java 编写的 Java 虚拟机实现。
  • IKVM.NET,.NET 上 Java 平台的实现。

也可以采用 Mono,编译为 LLVM 字节码,编译字节码使用 Emscripten 转换为 Javascript,并使用任何各种解释器在 .NET 上运行 Javascript。

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.

浮世清欢 2024-07-12 16:10:42

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

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

If you're willing to expand your definition of "runs CIL" to "JIT-Compiles CIL to Native Code," then you should look at the Managed Operating System Alliance -- a group of people (myself included) working toward creating the runtime pieces necessary to write a managed operating system kernel.

Currently, there is quite a bit left to do, but it is possible to JIT-compile and run simple methods (Win32 only -- we currently use P/Invoke to create the native code buffers)

空心空情空意 2024-07-12 16:10:42

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

I am not aware of one, but ideas frm JVM running on JVM should be helpful.

身边 2024-07-12 16:10:42

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

http://www.ikvm.net/

我知道它不是运行在CLR,但这是我所知道的最接近您想要的东西。

You should check out the IKVM.NET Project. It includes a Java Virtual Machine written in .NET.

http://www.ikvm.net/

I know it's not an actual CLR that runs on top of the CLR, but it's the closest thing I know of that does what you want.

绅刃 2024-07-12 16:10:42

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

可以重用它们的一些运行时代码来额外提供独立的运行时。 Cosmos 可用于在启动时托管自定义应用程序: http://www.codeproject.com /KB/system/CosmosIntro.aspx

I don't think there are currently any standalone .net VMs that are self hosting but both Cosmos and SharpOS are .net runtimes written in C#.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文