68、深入理解CIL编程:从基础到实践

深入理解CIL编程:从基础到实践

1. CIL操作码的角色

当使用各种指令和相关属性以CIL定义了.NET程序集、命名空间和类型集后,最后一项任务就是提供类型的实现逻辑,这正是操作码(opcodes)的用武之地。和其他低级语言一样,许多CIL操作码晦涩难懂,例如,若要将字符串变量加载到内存,不会使用友好的 LoadString 操作码,而是 ldstr

不过,部分CIL操作码能自然地映射到C#对应项,如 box unbox throw sizeof 。CIL操作码总是在成员实现范围内使用,且与CIL指令不同,它们从不以点号作为前缀。

2. CIL操作码与助记符的区别

ldstr 这样的操作码用于实现给定类型的成员,但 ldstr 这类标记实际上是实际二进制CIL操作码的助记符。例如,在C#中定义一个 Add 方法:

int Add(int x, int y)
{
    return x + y;
}

两数相加操作在CIL中用操作码 0X58 表示,相减用 0X59 ,在托管堆上分配新对象用 0X73 。JIT编译器处理的“CIL代码”本质上是二进制数据块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值