MethodBody类中有一个GetILAsByteArray方法,它给出了方法的主体。我正在寻找将此字节数组转换为更易理解的IL指令(进入List或类似的东西)。有哪些资源,开源代码或api可以帮助我理解和转换这个字节数组(或者为我做这些)?
我发现了这个,但它不适用于泛型。我几乎都在寻找指导来转换所有框架版本中的这些字节。
CLI文档也有助于学习IL指令,但我看不到如何使用它来使这些字节有意义。
答案 0 :(得分:9)
我刚刚编写了一个扩展方法,以使用GetILAsByteArray获得更易理解的指令列表。这很简单,API就像:
public static IList<Instruction> GetInstructions (this MethodBase self);
您可以在我的blog post中详细了解该实施。或者你可以去implementation并开始使用它。
答案 1 :(得分:2)
查看Mono.Cecil库。
答案 2 :(得分:1)
这是一项艰巨的任务。我写了一个IL读者的开头,它实现了相当多的操作码:但你将需要完成它。
http://svn.ensemble-os.org/tags/OldOCJ/CIL/
还有MONO Cecil,功能齐全。