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

《C# to IL》第一章 IL 入門(八):C# 最小程序反組譯與 VB.NET 程序編譯流程

     編輯:關於C語言

C# 最小程序 a.cs 反組譯全貌

class zzz {
  public static void Main() {
    System.Console.WriteLine("hi");
  }
}

編譯 csc a.cs → a.exe → ildasm /out=a.txt a.exe。

關鍵 IL 結構解析

  • .subsystem 3:Windows GUI 子系統(0x0003)。
  • .corflags 1:從 IL 創建的可執行文件(非 64 位標志)。
  • .assembly extern mscorlib:引用核心庫,含公開鑰雜湊與版本。
  • .assembly a:自身程序集定義。
  • .class private auto ansi zzz extends System.Object:類定義,auto 佈局由運行時決定,ansi 標記托管/非托管互操作字符串編碼。
  • .ctor:實例構造函數,調用基類 System.Object::.ctor(),含 ldarg.0(this 指針)。
  • .maxstack 8:方法執行期最大評估堆疊深度。

VB.NET 程序編譯步驟

  1. 源碼 one.vb → vbc one.vb 生成 one.exe。
  2. 反組譯觀察其入口點包裝類 _vbProject 與 modmain 類的關係。

核心指令速記

指令作用
ldstr載入字符串常量到堆疊
call靜態/非虛實例方法調用
newobj創建對象實例並調用構造函數
ldarg.0載入第 0 參數(實例方法為 this)
stloc.0彈出堆疊頂值存入局部變量 0
ret方法返回
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved