C# via CLR之IL中繼語言初步探索

來源:互聯網
上載者:User
我們先寫個最簡單的Console App,列印出一行字元:

using System;

using System.Collections.Generic;

using System.Text;
namespace ILTest

{

    class Program

    {

        static void Main(string[] args)

        {
            Console.WriteLine("Test App for IL");

        }

    }

}

編譯成功以後,得到一個exe檔案.
我們用MSIL Disassembler開啟這個.net編譯的擴充了的PE格式的EXE檔案,得到Metedata和IL.
ILTest.Program在ILDASM反編譯出來有三個方法,本別是
//方法一:
.class private auto ansi beforefieldinit ILTest.Program
       extends [mscorlib]System.Object
{
} // end of class ILTest.Program

//方法二:
.method public hidebysig specialname rtspecialname 
        instance void  .ctor() cil managed
{
  // Code size       7 (0x7)
  .maxstack  8
  IL_0000:  ldarg.0
  IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
  IL_0006:  ret
} // end of method Program::.ctor

//方法三:
.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       13 (0xd)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldstr      "Test App for IL"
  IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_000b:  nop
  IL_000c:  ret
} // end of method Program::Main

除此之外,在這個PE32檔案中還包含一個"清單(MainFest)"的資料區塊.清單是由中繼資料表構成的另外一種集合.這些表描述了構成程式集的檔案.由程式集中的檔案實現的公用匯出的類型,以及和這些程式集關聯在一起的一些資源或者是資料檔案.

同時,在Debug檔案夾下面還產生了一個與專案檔同名的  <專案檔名>.vshost.exe檔案.這個檔案是一個提高調試效能的宿主進程,,支援部分信任調試並支援設計時錶達式計算。

另外,還包含了一個同名的pdb檔案,程式資料庫檔案,儲存著調試和項目的狀態資訊的一個檔案.從而可以對調試配置進行增量連結.當用 /ZI 或 /Zi 編譯 C/C++ 程式時或用 /debug 編譯 Visual Basic/C# 程式時將建立 PDB 檔案.對於機器碼,它駐留在 \debug 子目錄中。而對於Managed 程式碼,它駐留在 \WINDEBUG 子目錄中。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.