首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET CIL 系列第一篇:CIL 核心概念——指令、屬性與操作碼

     編輯:關於.NET

CIL 是什麼?

CIL(Common Intermediate Language) 是 .NET 平台的「母語」。任何托管語言(C#、VB.NET、COBOL.NET 等)編譯後皆產生 CIL。CIL 本身也是一種 .NET 程式語言,可直接使用 .NET Framework SDK 提供的 ilasm.exe 編譯器開發組件。

為什麼要學習 CIL?

掌握 CIL 語法可讓您:

  • 理解不同 .NET 語言如何對應關鍵字至 CIL 標記
  • 反組譯組件、直接編輯 IL、重新編譯
  • 使用 System.Reflection.Emit 動態建立組件
  • 存取高階語言不支援的 CTS 特性(如全域成員/欄位)

CIL 對 .NET 開發者如同組合語言對 C++ 開發者,精通底層細節能解決高階語言難以處理的問題。

CIL 三大標記類別

CIL 依語意將標記分為三類,各有專屬語法:

1. CIL 指令

描述組件整體結構(命名空間、類型、成員),以 . 為前綴。

.namespace MyApp
.class public MyClass
.method public void MyMethod()
.assembly MyAssembly
.publickeytoken (B7 7A 5C 56 19 34 E0 89)

2. CIL 屬性

限定指令行為,搭配指令使用。

.class public extends [mscorlib]System.Object implements IMyInterface
//       ↑屬性↑          ↑屬性↑              ↑屬性↑
  • public:可見性
  • extends:基底類別
  • implements:介面清單

3. CIL 操作碼

實作邏輯,用於方法主體內,無需 . 前綴,多為助憶符號。

ldstr "Hello"
call void [mscorlib]System.Console::WriteLine(string)
ret
  • ldstr:載入字串(非 LoadString)
  • box/unbox、throw、sizeof 等少數可對應 C# 運算子

操作碼 vs 助憶符號

真實 IL 是二進位位元組碼(如 add = 0x58,sub = 0x59,newobj = 0x73)。ildasm.exe 將位元組碼翻譯為助憶符號供人類閱讀。一般開發者口中的「操作碼」實指助憶符號。

ildasm.exe 位置

開始 → 所有程式 → Microsoft Windows SDK v6.0A → 閃電圖示

下一篇預告

「入棧與出棧:CIL 基於堆疊的本質」—— 探討虛擬執行堆疊、Load/Store 機制與實際程式碼對應。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved