CIL 十六进制代码调用另一个程序集中的方法

CIL hex code to call method in another assembly

例如,我在程序集A中编写代码,而我要调用的方法在程序集B中的0x06000DF2处。这是 dnSpy 为我创建的十六进制 6F8701000A,但我不知道它是如何计算的。请给我解释一下。谢谢!

第一个字节(6F)表示它是callvirt指令,其余4个字节是method token for the method little endian byte order

callvirt 0x0A000187

元数据标记是对当前模块(包含 IL 的模块)元数据中特定 table 中特定行的引用。高位字节指示令牌的类型(因此,要查看哪个元数据 table),而其余 3 个字节指示 table 中的行号。 0x0A 表示目标行在 MemberRef table 中,引用的记录将提供查找正确成员所需的详细信息。

MemberRef table 在 ECMA-335 分区 II,第 22.25 节中描述。​​