MSIL

MSIL MSIL MSIL

簡介

Microsoft Intermediate Language (MSIL)微軟中間語言

運作方式

這是一種類似Java位元組碼的語言,也是為了能在不同平台移植所生成的中間代碼。具體過程如下:
MSIL是將.NET代碼轉化為機器語言的一個中間過程。它是一種介於高級語言和基於Intel的彙編語言的偽彙編語言。當用戶編譯一個.NET程式時,編譯器將原始碼翻譯成一組可以有效地轉換為本機代碼且獨立於CPU的指令。當執行這些指令時,實時(JIT)編譯器將它們轉化為CPU特定的代碼。由於公共語言運行庫支持多種實時編譯器,因此同一段msil代碼可以被不同的編譯器實時編譯並運行在不同的結構上。從理論上來說,MSIL將消除多年以來業界中不同語言之間的紛爭。在.NET的世界中可能出現下面的情況一部分代碼可以用EFFIL實現,另一部分代碼使用C#或VB.NET完成的,但是最後這些代碼都將被轉換為中間語言。這給程式設計師提供了極大的靈活性,程式設計師可以選擇自己熟悉的語言,並且再也不用為學習不斷推出的新語言而煩惱了。
編譯為託管代碼時,編譯器將原始碼翻譯為 Microsoft 中間語言 (MSIL),這是一組可以有效地轉換為本機代碼且獨立於 CPU 的指令。MSIL 包括用於載入、存儲和初始化對象以及對對象調用方法的指令,還包括用於算術和邏輯運算、控制流、直接記憶體訪問、異常處理和其他操作的指令。要使代碼可運行,必須先將 MSIL 轉換為特定於 CPU 的代碼,這通常是通過實時 (JIT) 編譯器來完成的。由於公共語言運行庫為它支持的每種計算機結構都提供了一種或多種 JIT 編譯器,因此同一組 MSIL 可以在所支持的任何結構上 JIT 編譯和運行。
當編譯器產生 MSIL 時,它也產生元數據。元數據描述代碼中的類型,包括每種類型的定義、每種類型的成員的簽名、代碼引用的成員和運行庫在執行時使用的其他數據。MSIL 和元數據包含在一個可移植可執行 (PE) 檔案中,此檔案基於並擴展過去用於可執行內容的已公布的 Microsoft PE 和公共對象檔案格式 (COFF)。這種檔案格式包含 MSIL 或本機代碼以及元數據,使得作業系統能夠識別公共語言運行庫映像。檔案中的元數據以及 MSIL 的存在使代碼能夠描述自身,這意味著不再需要類型庫或接口定義語言 (IDL)。運行庫在執行過程中根據需要從該檔案中查找並提取元數據。

相關詞條

相關搜尋

熱門詞條

聯絡我們