学习 CIL (MSIL) 的最佳资源是啥

Posted

技术标签:

【中文标题】学习 CIL (MSIL) 的最佳资源是啥【英文标题】:What are the best resources for learning CIL (MSIL)学习 CIL (MSIL) 的最佳资源是什么 【发布时间】:2010-09-14 09:32:09 【问题描述】:

我是一名 C# 3 / .NET 3.5 专家,希望开始使用 System.Reflection.Emit.DynamicMethod 进行一些运行时代码生成。我很想通过熟悉 IL 来更上一层楼。

任何指针(双关语)?

【问题讨论】:

【参考方案1】:

除了 Darren 的回答,我建议选择或发明一种玩具语言,并为它编写一个简单的编译器。选择一些不需要解析的东西,比如 BF 或基于堆栈的语言,你会发现编写编译器实际上比看起来更简单。

【讨论】:

【参考方案2】:

学习它的最好方法是写一些你理解的东西,然后看看它创建的 IL。此外,根据您的工作,您可以使用表达式树而不是发出 IL,然后当您编译表达式树时,微软的那些聪明人会为您创建 IL。

【讨论】:

表达树 FTW!没想到!谢谢!【参考方案3】:

.NET Reflector 非常适合检查由 C#/VB.NET 生成的 IL。

这是一个很棒的学习工具。

【讨论】:

我一直在使用它,但将其反编译为 C# - 很好的建议,谢谢!【参考方案4】:

ECMA 335 规范可在此处免费下载: http://www.ecma-international.org/publications/standards/Ecma-335.htm

分区 III 与处理 MSIL 最相关,但我强烈建议任何 .NET 开发人员也使用分区 I,因为它将极大地巩固对平台的理解。

【讨论】:

我想提一下,在过去的几周里,我也想深入挖掘 .Net 并了解 CIL 代码。我能找到的最好的文件是规范。不幸的是,我还没有找到一个可靠的“自学 CIL”网站,它有足够的信息来精通 MSIL。如果您想要硬文档,规范似乎是最好的选择。【参考方案5】:

Expert .NET 2.0 IL Assembler.虽然这本书现在可能有点过时,但对我来说仍然是一个很好的概述。

【讨论】:

以上是关于学习 CIL (MSIL) 的最佳资源是啥的主要内容,如果未能解决你的问题,请参考以下文章

如何查看 C# 编译器生成的 MSIL / CIL?为啥叫组装?

Mono为何能跨平台?聊聊CIL(MSIL)

学习开发、部署和/或托管 Django 的最佳书籍和资源是啥? [关闭]

使用入门项目学习核心数据的最佳资源是啥? [关闭]

深入学习 C# 表达式树的最佳资源是啥?

学习如何在 SSAS 中实现朴素贝叶斯分类器的最佳资源是啥?