通用中间语言(Common Intermediate Language,CIL)是.NET框架中由C#、Visual Basic .NET等语言编译生成的中间指令集,以面向对象和基于堆栈的方式运行于虚拟机环境,存储在扩展名为.exe或.dll的程序集中。该语言通过即时编译(JIT)转换为机器码,或由本机映像生成器(NGEN)预编译为特定处理器文件以提高性能,其汇编程序(Ilasm.exe)可将.il源文件编译为可移植可执行(PE)文件并支持强名称签名等编译选项。
在编译.NET
编程语言时,源代码被翻译成CIL码,而不是基于特定平台或处理器的
目标代码。CIL是一种独立于具体CPU和平台的
指令集,它可以在任何支持.NET framework的环境下运行。CIL码在运行时被检查并提供比
二进制代码更好的安全性和可靠性。
即时编译(JIT)是指
字节码在CPU执行时被立即转换成
机器码。转换是在程序执行的过程中逐渐进行的。即时编译技术提供了特定环境下的优化、运行时
类型安全以及汇编验证。为此,
即时编译器检查
程序集元数据中是否有非法访问和句柄的冲突。
编译本机映像生成器 (Ngen.exe) 是一个提高托管应用程序性能的工具。Ngen.exe 创建本机映像(包含经编译的特定于处理器的机器代码的文件),并将它们安装到本地计算机上的本机映像缓存中。
运行库可从
缓存中使用本机映像,而不是使用实时
编译器编译原始
程序集。