我是一位专家C#3/.NET 3.5程序员,希望使用System.Reflection.Emit.DynamicMethod开始执行一些运行时代码。我很想通过熟悉IL来升级到新的水平。什么是学习CIL的最佳资源(MSIL)
任何指针(双关语意)?
我是一位专家C#3/.NET 3.5程序员,希望使用System.Reflection.Emit.DynamicMethod开始执行一些运行时代码。我很想通过熟悉IL来升级到新的水平。什么是学习CIL的最佳资源(MSIL)
任何指针(双关语意)?
学习它的最好方法是编写你理解的东西,然后看看它创建的IL。另外,根据你在做什么,你可以使用表达式树来代替发送IL,然后当你编译表达式树时,那些微软的聪明人会为ya创建IL。
Expert .NET 2.0 IL Assembler.虽然这本书可能有点过时了,但它仍然是我的一个很好的概述。
.NET Reflector非常适用于检查由C#/ VB.NET生成的IL。
这是一个很棒的学习工具。
我一直在使用它,但将它反编译为C# - 非常好的建议,谢谢! – TheSoftwareJedi 2008-09-30 23:02:07
的ECMA 335规范可在这里下载: http://www.ecma-international.org/publications/standards/Ecma-335.htm
分区III是最相关的处理MSIL,但我强烈建议分区我以及任何.NET开发人员,因为它会大大巩固了对该平台的理解。
我想提一下,在过去的几周里,我也想深入研究.Net的碗,并了解CIL代码。我能找到的最好的文档是规范。不幸的是,我还没有找到一个坚实的“自学CIL”网站,该网站有足够的信息来熟练掌握MSIL。如果你想要硬记录,规范似乎是最好的去处。 – RLH 2015-03-13 11:24:54
除了达伦的回答,我建议选择或发明一种玩具语言,并为它编写一个简单的编译器。选择一些需要很少解析的东西,比如BF或基于堆栈的语言,你会发现编写一个编译器实际上比看起来简单。
表达树FTW! 没想过!谢谢! – TheSoftwareJedi 2008-09-30 23:05:48