CIL(Common Intermediate Language) 是 .NET 平台的「母語」。任何托管語言(C#、VB.NET、COBOL.NET 等)編譯後皆產生 CIL。CIL 本身也是一種 .NET 程式語言,可直接使用 .NET Framework SDK 提供的 ilasm.exe 編譯器開發組件。
掌握 CIL 語法可讓您:
System.Reflection.Emit 動態建立組件CIL 對 .NET 開發者如同組合語言對 C++ 開發者,精通底層細節能解決高階語言難以處理的問題。
CIL 依語意將標記分為三類,各有專屬語法:
描述組件整體結構(命名空間、類型、成員),以 . 為前綴。
.namespace MyApp
.class public MyClass
.method public void MyMethod()
.assembly MyAssembly
.publickeytoken (B7 7A 5C 56 19 34 E0 89)
限定指令行為,搭配指令使用。
.class public extends [mscorlib]System.Object implements IMyInterface
// ↑屬性↑ ↑屬性↑ ↑屬性↑
public:可見性extends:基底類別implements:介面清單實作邏輯,用於方法主體內,無需 . 前綴,多為助憶符號。
ldstr "Hello"
call void [mscorlib]System.Console::WriteLine(string)
ret
ldstr:載入字串(非 LoadString)box/unbox、throw、sizeof 等少數可對應 C# 運算子真實 IL 是二進位位元組碼(如 add = 0x58,sub = 0x59,newobj = 0x73)。ildasm.exe 將位元組碼翻譯為助憶符號供人類閱讀。一般開發者口中的「操作碼」實指助憶符號。
開始 → 所有程式 → Microsoft Windows SDK v6.0A → 閃電圖示
「入棧與出棧:CIL 基於堆疊的本質」—— 探討虛擬執行堆疊、Load/Store 機制與實際程式碼對應。