MSIL作为纯组件的实现?

时间:2012-08-04 06:33:23

标签: .net assembly bytecode cil

最近,我对汇编语言感兴趣。在这样做的过程中,我也对字节码的概念产生了兴趣。所以当我研究微软的.NET时,我很感兴趣,发现它使用了一种伪装配来创建自己的字节码。但是,汇编语言本身给我留下了深刻的印象。对我来说,这似乎是一种更高级别的集会。

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

1 个答案:

答案 0 :(得分:1)

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

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

还有IL2CPU created by and for the Cosmos project,它在C#中创建了一个完整的操作系统。如果没有托管操作系统,那么就没有.NET Framework,他们别无选择,只能将IL转换为机器代码。 IL2CPU也有其限制,但我不知道完整列表。

但最终,对于绝大多数.NET程序而言,优势很少。您的程序运行速度不会明显加快,您的程序难以调试(程序中是否存在错误,或者您的IL转换器中存在错误?),如果您的安装最终包含了.NET Framework本身的一些内容,安全更新不适用于这些位的副本。所以,不要这样做,除非你真的知道你在做什么。