19

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

任何指针(双关语)?

4

5 回答 5

6

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

于 2008-10-01T08:55:22.693 回答
5

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

于 2008-09-30T22:28:01.080 回答
5

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

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

于 2008-09-30T22:47:44.167 回答
5

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

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

于 2008-10-01T07:47:52.560 回答
3

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

于 2008-09-30T22:31:21.367 回答