複製鏈接
請複製以下鏈接發送給好友

MSIL

鎖定
Microsoft Intermediate Language (MSIL)微軟中間語言。
MSIL 反彙編程序是 MSIL 彙編程序(Ilasm.exe) 的夥伴工具。 Ildasm.exe 採用包含 Microsoft中間語言 (MSIL) 代碼的可遷移可執行 (PE) 文件,並創建相應的文本文件作為 Ilasm.exe 的輸入。
中文名
微軟中間語言
外文名
Microsoft Intermediate Language
簡    稱
MSIL
功能解釋
NET代碼轉化為機器語言

目錄

MSIL過程

類似Java字節碼的語言,也是為了能在不同平台移植所生成的中間代碼。具體過程如下:
MSIL是將.NET代碼轉化為機器語言的一箇中間過程。它是一種介於高級語言和基於Intel的彙編語言的偽彙編語言。當用户編譯一個.NET程序時,編譯器將源代碼翻譯成一組可以有效地轉換為本機代碼且獨立於CPU的指令。當執行這些指令時,實時(JIT)編譯器將它們轉化為CPU特定的代碼。由於公共語言運行庫支持多種實時編譯器,因此同一段msil代碼可以被不同的編譯器實時編譯並運行在不同的結構上。從理論上來説,MSIL將消除多年以來業界中不同語言之間的紛爭。在.NET的世界中可能出現下面的情況一部分代碼可以用EFFIL實現,另一部分代碼使用C#或VB.NET完成的,但是最後這些代碼都將被轉換為中間語言。這給程序員提供了極大的靈活性,程序員可以選擇自己熟悉的語言,並且再也不用為學習不斷推出的新語言而煩惱了。

MSIL構成

編譯為託管代碼時,編譯器將源代碼翻譯為Microsoft中間語言 (MSIL),這是一組可以有效地轉換為本機代碼且獨立於 CPU 的指令。MSIL 包括用於加載、存儲和初始化對象以及對對象調用方法的指令,還包括用於算術和邏輯運算、控制流、直接內存訪問、異常處理和其他操作的指令。要使代碼可運行,必須先將 MSIL 轉換為特定於 CPU 的代碼,這通常是通過實時 (JIT) 編譯器來完成的。由於公共語言運行庫為它支持的每種計算機結構都提供了一種或多種 JIT 編譯器,因此同一組 MSIL 可以在所支持的任何結構上 JIT 編譯和運行。
當編譯器產生MSIL時,它也產生元數據。元數據描述代碼中的類型,包括每種類型的定義、每種類型的成員的簽名、代碼引用的成員和運行庫在執行時使用的其他數據。MSIL 和元數據包含在一個可移植可執行 (PE) 文件中,此文件基於並擴展過去用於可執行內容的已公佈的 Microsoft PE 和公共對象文件格式 (COFF)。這種文件格式包含 MSIL 或本機代碼以及元數據,使得操作系統能夠識別公共語言運行庫映像。文件中的元數據以及 MSIL 的存在使代碼能夠描述自身,這意味着不再需要類型庫或接口定義語言 (IDL)。運行庫在執行過程中根據需要從該文件中查找並提取元數據。