有没有人知道任何好的资源来学习如何使用命令的深入描述等来编程 CIL?我环顾四周,但没有发现任何特别好的东西。
3 回答
我书架上唯一的 CIL 书籍是Serge Lidin 的Expert .NET 2.0 IL Assembler。就各个操作码的作用或含义而言,System.Reflection.Emit 上的 Microsoft 文档有一些很好的信息。使用Reflector查看现有的 IL 总是很有用的。
编辑: CIL(实际上是一般的 CLR)在 .NET 2.0 和 .NET 3.5 之间根本没有改变——底层运行时基本相同,模修复和性能改进。因此,在 CIL 级别上,没有什么比 2.0 的书中更新的内容了
Expert .NET 2.0 IL Assembler之所以出色,是因为作者写得很好,并且包含了您能想象到的每一个怪异的细节。他编写了 IL 汇编器、反汇编器和验证器并没有什么坏处。最重要的是,您可以购买 PDF 而不是死树。
对编译器开发感兴趣的受虐狂也会喜欢John Gough的 Compiling for the .NET Common Language Runtime。在一个虚拟机开发项目中,我从 CLR 设计中“窃取”了很多想法,我发现这本书非常有帮助。
Serge Lidin 的专家 .NET 2.0 IL 汇编程序
同一本书有 1.1 版本,但我没有看到任何最新的 .NET 版本。这是一本很棒的书。我用它在 MSIL 中编写了一个 OCR 组件,作为一个学习项目。
[编辑] @Curt 是对的,3.0 和 3.5 只是 2.0 的扩展,我还没有把它插入我的脑海中。现在我想到了一个有趣的极客项目……将标准 2.0 代码的反汇编与执行过滤列表等常见任务的新 LINQ/Lambda 方式进行比较。出于某种原因,我认为魔法发生在新的 IL 功能中,而不仅仅是编译器。