通用中間語言

通用中間語言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

編輯

參見

編輯

參考文獻

編輯

外部連結

編輯