例如,我正在程序集A中编写代码,我要调用的方法是程序集B中的0x06000DF2。这是十六进制dnSpy为我创建的6F8701000A,但我不知道它是如何计算的。请解释给我听。谢谢!
发布于 2017-04-10 10:47:25
第一个字节(6F)表示它是callvirt指令,其余4个字节是方法小端字节顺序的元数据标记。
callvirt 0x0A000187元数据令牌是对当前模块(包含IL的模块)元数据中特定表中特定行的引用。高阶字节表示令牌的类型(因此,要查找哪个元数据表),而其余的3个字节表示表中的行号。0x0A表示目标行位于MemberRef表中,引用的记录将提供查找正确成员所需的详细信息。
MemberRef表在ECMA-335分区II第22.25节中进行了描述。
https://stackoverflow.com/questions/43313484
复制相似问题