通用中間語言
通用中間語言(Common Intermediate Language,簡稱CIL,發音為"sill"或"kill")是一種屬於通用語言架構和.NET框架的低階(lowest-level)的人類可讀的程式語言。目標為.NET框架的語言被編譯成CIL,然後彙編成字節碼。CIL類似一個物件導向的組合語言,並且它是完全基於堆疊的。它運行在虛擬機上,其主要的語言有C#、Visual Basic .NET(VB.NET)、C++/CLI以及J#。
在.NET語言的測試版中,CIL原本叫做微軟中間語言,即Microsoft Intermediate Language,簡稱MSIL。由於C#和通用語言架構的標準化,在.Net開發平台下,所有語言(C#、VB.NET、J#、C++/CLI)都會被編譯為MSIL,再由CLR負責運行,字節碼現在已經官方地成為了CIL。因此MSIL有時仍會與CIL混用,特別是那些.NET語言的老用戶。更詳細的信息可以參看微軟的說明。
概述
在編譯.NET程式語言時,原始碼被翻譯成CIL碼,而不是基於特定平台或處理器的目標代碼。CIL是一種獨立於具體CPU和平台的指令集,它可以在任何支持.NET framework的環境下運行。CIL碼在運行時被檢查並提供比二進制代碼更好的安全性和可靠性。
即時編譯(JIT)
即時編譯是指字節碼在CPU執行時被立即轉換成機器碼。轉換是在程序執行的過程中逐漸進行的。即時編譯技術提供了特定環境下的最佳化、運行時類型安全以及彙編驗證。為此,即時編譯器檢查程序集元數據中是否有非法訪問和句柄的衝突。
NGEN(本機映像生成器)編譯
本機映像生成器(Ngen.exe)是一個提高託管應用程式性能的工具。Ngen.exe創建本機映像(包含經編譯的特定於處理器的機器代碼的文件),並將它們安裝到本地計算機上的本機映像緩存中。運行庫可從緩存中使用本機映像,而不是使用實時編譯器編譯原始程序集。
元數據
執行CIL
參見
- Phalanger(PHP into CIL compiler)
參考文獻
外部連結
- Hello world program in CIL
- Kenny Kerr's intro to CIL (called MSIL in the tutorial) (頁面存檔備份,存於網際網路檔案館)
- Common Language Infrastructure (CLI ) - Partition III - CIL Instruction Set
- Tutorial including CIL (called MSIL in the tutorial) by Aleksey Nudelman
- Common Language Infrastructure (Standard ECMA-335)(頁面存檔備份,存於網際網路檔案館)
- Speed: NGen Revs Up Your Performance With Powerful New Features -- MSDN Magazine, April 2005
- C# and Common Language Infrastructure Standards」on MSDN[永久失效連結]