C#程式集系列02,使用記事本查看可執行程式集的IL代碼

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   使用   ar   for   

繼續上一篇"C#程式集系列01,用記事本編寫C#,IL代碼,用DOS命令編譯器集,運行程式",在F盤的as檔案夾中已經有了若干程式集。本篇體驗使用記事本查看可執行程式集的IL代碼。

 

→開啟"VS2012開發人員命令提示",輸入如下命令,並按斷行符號

在as檔案夾中多了1.txt和1.res這2個檔案
→輸入如下命令開啟1.txt

 

//  Microsoft (R) .NET Framework IL Disassembler.  Version 4.0.30319.18020
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 4:0:0:0
}
.assembly extern MyClass
{
  .ver 0:0:0:0
}
.assembly MainClass
{
  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
  .hash algorithm 0x00008004
  .ver 0:0:0:0
}
.module MainClass.exe
// MVID: {73BA142E-F5C9-4C2E-8963-DB7213CB466A}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00000001    //  ILONLY
// Image base: 0x00560000
// =============== CLASS MEMBERS DECLARATION ===================
.class private auto ansi beforefieldinit MainClass
       extends [mscorlib]System.Object
{
  .method private hidebysig static void  Main() cil managed
  {
    .entrypoint
    // 代碼大小       8 (0x8)
    .maxstack  8
    IL_0000:  nop
    IL_0001:  call       void [MyClass]MyClass::PrintSth()
    IL_0006:  nop
    IL_0007:  ret
  } // end of method MainClass::Main
  .method public hidebysig specialname rtspecialname 
          instance void  .ctor() cil managed
  {
    // 代碼大小       7 (0x7)
    .maxstack  8
    IL_0000:  ldarg.0
    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
    IL_0006:  ret
  } // end of method MainClass::.ctor
} // end of class MainClass
// =============================================================
// *********** 反組譯碼完成 ***********************
// 警告: 建立了 Win32 資源檔 1.res

以上,

○ .assembly extern mscorlib,表示在CLR運行時需要引用mscorlib這個.NET預設程式集
○ .assembly extern MyClass,表示在CLR運行時需要引用MyClass這個自訂程式集
○ .assembly MainClass語句塊,包含了MainClass這個程式集的Manifest清單
○ .module MainClass.exe,表示MainClass這個程式集有一個module,名稱是MainClass.exe,當然一個程式集可以包含多個module

 

C#程式集系列02,使用記事本查看可執行程式集的IL代碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.