标签:
Mono是一个.Net工具,包括c#编译器和共通语言执行平台,可运行在winodws linux mac unix各种平台,其虚拟机包含一个实时编译引擎, Unity3d就是用mono这个东西实现跨平台的估计
CIL可以在任何支持CLI(Common Language Infrastructure,通用语言基础结构)的环境中运行,就像.NET是微软对这一标准的实现,Mono则是对CLI的又一实现。由于CIL能运行在所有支持CLI的环境中,例如刚刚提到的.NET运行时以及Mono运行时,也就是说和具体的平台或者CPU无关。这样就无需根据平台的不同而部署不同的内容了。
代码的编译分两个部分:
Ahead of Time (AOT) 提前编译来减少JIT的工作量,(JIT: Just In Time Compile,即时编译器)但默认情况下AOT并不编译所有IL代码,而是在优化和JIT之间取得一个平衡。在iOS中,Mono是以Full AOT模式运行的,无法使用JIT引擎。iOS平台是禁用JIT引擎的,于是Mono在iOS上需要Full AOT编译和运行。即预先对程序集中的所有IL代码进行AOT编译生成一个本地代码映像,然后在运行时直接加载这个映像而不再使用JIT引擎。
猜测反射就是Mono使用JIT的主要技术
标签:
原文地址:http://www.cnblogs.com/atenza/p/4897174.html