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

《C# to IL》第一章 IL 入門(九):ildasm 反組譯實戰與 VB.NET 最小程序結構

     編輯:關於C語言

ildasm 反組譯命令與輸出

>ildasm /out=a.txt one.exe

生成的 a.txt 包含完整元數據:程序集引用、版本、公開鑰雜湊、模組定義、類型定義、方法體 IL 碼。

VB.NET 最小程序 one.vb 反組譯關鍵點

Public Module modmain
 Sub Main()
  System.Console.WriteLine("hell")
 End Sub
End Module
  • 編譯器生成 modmain 類(對應 Module),標記 Globals$StandardModuleAttribute。
  • 入口點實際在 _vbProject::_main(string[]),內部調用 modmain::Main()。
  • 方法體極簡:ldstr "hell" → call WriteLine → ret。

IL 組譯往返驗證

反組譯輸出可重新通過 ilasm 組譯為可執行文件,證明 IL 是完整、可逆的中間表示。

核心 IL 片段解讀

.assembly extern mscorlib { ... }
.assembly one as "one" { ... }
.module one.exe
.class public auto ansi modmain extends [mscorlib]System.Object {
  .method public static void Main() il managed {
    .entrypoint
    .maxstack 1
    .locals init (class System.Object[] V_0)
    IL_0000: ldstr "hell"
    IL_0005: call void [mscorlib]System.Console::WriteLine(class System.String)
    IL_000a: ret
  }
}
.class private auto ansi _vbProject extends [mscorlib]System.Object {
  .method public static void _main(class System.String[] _s) il managed {
    .entrypoint
    .maxstack 8
    IL_0000: call void modmain::Main()
    IL_0005: ret
  }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved