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