我是专家C#3 / .NET 3.5程序员希望开始做一些运行时代码生成使用System.Reflection.Emit.DynamicMethod。 我很想通过成为非常熟悉IL拉升到一个新的水平。
任何指针(双关语意)?
我是专家C#3 / .NET 3.5程序员希望开始做一些运行时代码生成使用System.Reflection.Emit.DynamicMethod。 我很想通过成为非常熟悉IL拉升到一个新的水平。
任何指针(双关语意)?
学习它的最好方法,就是写你了解的东西,然后看它创造了IL。 此外,这取决于你在做什么,你可以使用表达式树,而不是发射IL,然后当你编译表达式树,在微软的那些聪明的家伙创造IL雅。
除了达伦的答案,我会建议挑选或发明一种玩具语言,写一个简单的编译器吧。 挑东西,只需要很少的解析,像BF或基于堆栈的语言,你会发现,编写编译器实际上是简单的比它似乎。
.net反射是非常适合检查由C#/ VB.NET产生的IL。
这是一个极好的学习工具。
该ECMA 335规范可在这里下载: http://www.ecma-international.org/publications/standards/Ecma-335.htm
分区III是最相关的处理MSIL,但我强烈建议分区我以及任何.NET开发人员,因为这将极大地巩固了平台的理解。
专家.NET 2.0 IL汇编。 虽然这本书可能是现在有点过时,但仍对我来说是很好的概述。