加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – MSIL – 如果给出一个整数,调用操作码如何知道调用什么方

发布时间:2020-12-15 22:20:06 所属栏目:百科 来源:网络整理
导读:我试图弄清楚MSIL如何通过仅存储整数来表示对静态函数的调用. 例如,如果添加对Interlocked.Increment(ref someVariable)的调用,则IL将包含以下内容: 0x28 | 0x12,0x0,0xA 管道运算符是我的补充,基本上0x28是调用指令,012,0×0,0xA是“Interlocked.Increment
我试图弄清楚MSIL如何通过仅存储整数来表示对静态函数的调用.

例如,如果添加对Interlocked.Increment(ref someVariable)的调用,则IL将包含以下内容:

0x28 | 0x12,0x0,0xA

管道运算符是我的补充,基本上0x28是调用指令,012,0×0,0xA是“Interlocked.Increment”方法.

谁决定了这个价值?当您使用ildasm进行反汇编时,它会打印出名称,但是它有一个查找的表吗?

这个表定义在哪里?

解决方法

根据ECMA-335,0x0A000012是元数据令牌.元数据令牌基本上是唯一标识本地模块中的类型,方法,字段等的数字. 0x0A表示模块中的MemberRef表,0x12表示表中方法的索引.

该表包含方法的名称和签名(如其参数和返回类型).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读