0

最近,我对汇编语言产生了兴趣。在这样做的过程中,我也对字节码的概念产生了兴趣。因此,当我查看 Microsoft 的 .NET 时,我相当感兴趣,发现它使用一种伪汇编来创建自己的字节码。但是,汇编语言本身给我留下了深刻的印象。对我来说,这似乎是一种更高级别的组装。

我的问题是,这是否可以实现为纯程序集,例如编译的本机代码而不是 JIT/解释的 .NET 字节码?尝试这样的努力是否明智?有什么好处?

4

1 回答 1

1

在某种程度上,将 CIL 转换为特定于机器的装配是可能的。

Marc Gravell 在评论中提到了 Mono AOT,这是一种选择。如Mono AOT页面上所列,如果您使用完整的 AOT(没有任何运行时 IL 解释),那么您可以做什么和不能做什么会有一些限制。否则,一些可以转换为机器代码的 IL 是,其余的在运行时会像往常一样被解释。

还有由 Cosmos 项目创建的 IL2CPU,它用 C# 创建了一个完整的操作系统。如果没有托管操作系统,就没有 .NET Framework,他们别无选择,只能将 IL 转换为机器代码。IL2CPU 也有其局限性,但我不知道完整的清单。

但归根结底,对于绝大多数 .NET 程序来说,优势很少。您的程序不会运行得更快,您使您的程序难以调试(您的程序或 IL 翻译器中是否存在错误?),如果您的安装最终包含 .NET Framework 本身的部分,安全更新不适用于您的这些位副本。所以,不要这样做,除非你真的知道你在做什么。

于 2012-08-12T10:12:50.453 回答