理解CIL和动态程序集的作用
1. CIL操作码与助记符的区别
在CIL(Common Intermediate Language)中,像 ldstr 这样的标记实际上是实际二进制CIL操作码的助记符。例如,在C#中编写一个简单的加法方法:
static int Add(int x, int y)
{
return x + y;
}
在CIL里,两个数相加的操作由操作码 0X58 表示,相减用 0X59 ,在托管堆上分配新对象用 0X73 。不过,每个二进制操作码都有对应的助记符,比如 add 对应 0X58 , sub 对应 0X59 , newobj 对应 0X73 。
CIL反编译器(如 ildasm.exe )会将程序集的二进制操作码转换为对应的CIL助记符。以下是 ildasm.exe 为上述 Add() 方法生成的CIL代码:
.method private hidebysig static int32 Add(int32 x,
int32 y) cil managed
{
// Co
超级会员免费看
订阅专栏 解锁全文
51

被折叠的 条评论
为什么被折叠?



