程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 《C# to IL》第一章 IL入門(8)

《C# to IL》第一章 IL入門(8)

編輯:關於C語言

這就創建了一個txt文件,具有下面的內容:

a.txt

//  Microsoft (R) .Net  Framework IL Disassembler.  Version 1.0.2204.21
//  Copyright (C) Microsoft Corp. 1998-2000

// VTableFixup Directory:
// No data.
.subsystem 0x00000003
.corflags 0x00000001
.assembly extern mscorlib
{
  .originator = (03 68 91 16 D3 A4 AE 33 )        // .h..3
  .hash = (52 44 F8 C9 55 1F 54 3F 97 D7 AB AD E2 DF 1D E0
           F2 9D 4F BC )                        //  RD..U.T?O.
  .ver 1:0:2204:21
}
.assembly a as "a"
{
  .hash algorithm 0x00008004
  .ver 0:0:0:0
}
.module aa.exe
// MVID: {89CFAD60-F5BD-11D4-A55A-96B5C7D61E7B}
.class private auto ansi zzz
       extends System.Object
{
  .method public hidebysig static void vijay() il managed
  {
    .entrypoint
    // Code size       11 (0xb)
    .maxstack  8
    IL_0000:  ldstr      "hell"
    IL_0005:  call       void System.Console::WriteLine(class System.String)
    IL_000a:  ret
  } // end of method zzz::vijay

  .method public hidebysig specialname rtspecialname 
          instance void .ctor() il managed
  {
    // Code size       17 (0x11)
    .maxstack  8
    IL_0000:  ldstr      "hell"
    IL_0005:  call       void System.Console::WriteLine(class System.String)
    IL_000a:  ldarg.0
    IL_000b:  call       instance void [mscorlib]System.Object::.ctor()
    IL_0010:  ret
  } // end of method zzz::.ctor

} // end of class zzz

//*********** DISASSEMBLY COMPLETE ***********************

當我們閱讀上面的 文件時,你將明白它的所有內容都已經在前面解釋過了。我們開始於一個簡單的C#程序,然後將它編譯到 一個可執行文件中。在正常的環境下,它將被轉換為機器語言或這個程序運行在所在的計算機/微處理器 的匯編程序。一旦創建了可執行體,我們就使用ildasm來反匯編它。反匯編輸出被保存到一個新的文件 a.txt中。這個文件可能被命名為a.il,然後我們可以通過對其運行ilasm反過來再次創建這個可執行體。

讓我們看一下最小的VB.Net程序。我們將它命名為one.vb,而它的源代碼如下所示:

one.vb

Public Module modmain
    Sub Main()
        System.Console.WriteLine("hell")
    End Sub
End Module

在編寫完上述的代碼後,我們運行Visual.Net編譯器vbc如下:

>vbc one.vb

這就產生了文件one.exe。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved