MethodBody 类中有一个 GetILAsByteArray 方法,它给出了方法的主体。我正在寻找将此字节数组转换为更易于理解的 IL 指令(转换为 List 或类似的东西)。有哪些资源、开源代码或 api 可以帮助我理解和转换这个字节数组(或为我做)?
我发现了这一点,但它不适用于泛型。我非常期待在所有框架版本中转换理解这些字节的指导。
CLI 文档对于学习 IL 指令也很有帮助,但我看不出如何使用它来使这些字节有意义。
MethodBody 类中有一个 GetILAsByteArray 方法,它给出了方法的主体。我正在寻找将此字节数组转换为更易于理解的 IL 指令(转换为 List 或类似的东西)。有哪些资源、开源代码或 api 可以帮助我理解和转换这个字节数组(或为我做)?
我发现了这一点,但它不适用于泛型。我非常期待在所有框架版本中转换理解这些字节的指导。
CLI 文档对于学习 IL 指令也很有帮助,但我看不出如何使用它来使这些字节有意义。
我刚刚编写了一个扩展方法,以便使用 GetILAsByteArray 获得更易于理解的指令列表。这很简单,API 是这样的:
public static IList<Instruction> GetInstructions (this MethodBase self);
您可以在我的博客文章中阅读更多关于实现的信息。或者你可以去实现并开始使用它。
看看 Mono.Cecil 库。
这是一项艰巨的任务。我写了一个 IL 阅读器的开头,它实现了相当多的操作码:但你需要完成它。
http://svn.ensemble-os.org/tags/OldOCJ/CIL/
还有MONO Cecil,功能齐全。