1.4 执行程序集代码
托管模块中包含着元数据和IL代码,IL是一种独立于CPU的机器语言,它高级的地方在于能理解对象类型,并且拥有很多高级的指令,这些指令可以创建和初始化对象,调用对象上的虚方法,以及直接操作数组元素,甚至有抛出和捕获异常的指令,可以看做是一个面向对象的机器语言。
C#是一种高级语言,编译后产生的就是IL代码。也可以直接以汇编语言的方式编写IL程序,微软的IL汇编器 ILAsm.exe和反汇编器ILDasm.exe。
任何高级语言大多数情况下提供的只是CLR全部功能的一个子集。但IL汇编语言允许开发人员获取CLR所有的功能。另一个关于IL要记住的要点是它并不束缚于任何特定的CPU平台,前提是该CPU平台的OS寄宿了某个版本的CLR。
目前的CPU不能直接执行IL指令,还得转换成本地CPU指令。这属于CLR中即时JIT编译器的工作。下图表示了执行IL的过程
待续