標籤: 暫無標籤

1簡介

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

2實際應用

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

3元數據

當編譯器產生 MSIL 時,它也產生元數據。元數據描述代碼中的類型,包括每種類型的定義、每種類型的成員的簽名、代碼引用的成員和運行庫在執行時使用的其他數據。MSIL 和元數據包含在一個可移植可執行 (PE) 文件中,此文件基於並擴展過去用於可執行內容的已公布的 Microsoft PE 和公共對象文件格式 (COFF)。這種文件格式包含 MSIL 或本機代碼以及元數據,使得操作系統能夠識別公共語言運行庫映像。文件中的元數據以及 MSIL 的存在使代碼能夠描述自身,這意味著不再需要類型庫或介面定義語言 (IDL)。運行庫在執行過程中根據需要從該文件中查找並提取元數據。
上一篇[點蒼梅]    下一篇 [喻蘭]

相關評論

同義詞:暫無同義詞