Unity3D 跨平台原理

Unity3D的跨平台原理核心在于对指令集CIL(通用中间语言)的应用。

机理

首先需要知道,Unity中的Mono是基于 通用语言架构(Common Language Infrastructure,CLI)和C#的ECMA标准实现的,与微软的.NET框架有着诸多类似之处,因此分析Unity的跨平台性,本质即为分析.NET框架下C#语言从编译到运行的过程。首先抛出几个重要概念:

  • CIL通用中间语言(Common Intermediate Language),属于通用语言架构和.NET 框架的低阶编程语言,完全基于堆栈,运行在CLR上
  • CLR公共语言运行库,和Java虚拟机一样也是一个运行时环境,可由面向CLR的所有语言使用,是.NET Framework的主要执行引擎。CIL在CLR内的存在形式为IL(中间语言)。
  • JIT即时编译,在程序执行时才编译代码,逐条将IL语句翻译为机器语句,然后执行。

机理概述:在编译.NET编程语言如C#时,源代码首先被Unity中Mono内的C#编译器编译成CIL码,经过CLR中JIT编译器将其翻译为本地代码,最终运行于操作系统上。因此Unity可在众多支持.NET框架的平台上工作。

其他

  • 托管代码:在CLR中执行的代码,由多种支持.NET的语言编写而来,实质是中间代码。例如本例C#编写的代码被编译为CIL,运行于CLR中的形式为IL,故IL既是中间语言,又是托管代码

参考

posted @ 2019-07-26 12:29  SouthBegonia  阅读(985)  评论(0编辑  收藏  举报