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

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

編輯:關於C語言

.subsystem: 這個指 令用於指定可執行體運行在什麼操作系統上。這是另一種指定可執行體所代表的種類的方式。一些數字值 和它們對應的操作系統如下所示:

2 - A Windows Character 子系統。

3 - A Windows GUI 子系統。

5 – 像OS/2這樣的老系統。

.corsflags: 這個偽指令用於指定對於64 位計算機唯一的標志。值1表示它是從il中創建的可執行文件,而值64表示一個庫。

.assembly: 在前面,我們曾經簡單涉及過一個名為.assembly的指令。現在讓我們進行深入的研究。

無論我們 創建了什麼,都是一個稱為清單(manifest)的實體的一部分。.assembly偽指令標注了一個清單的開始 位置。在層次上,模塊是清單最小的實體。.assembly偽指令指定了這個模塊屬於哪個程序集。模塊只能 包括一個單獨的.assembly偽指令。

對於exe文件,這個偽指令的存在是必須的,但是,對於.dll 中的模塊,則是可選的。這是因為,我們需要使用這個偽指令來創建一個程序集。這是.Net的基本需要。 程序集偽指令包括了其它偽指令。

.hash: 散列計算是一門在計算機世界中通用的技術,這裡有大 量使用到的散列方法或算法。這個偽指令用於散列計算。

.ver: .ver:偽指令包括了4個由冒號分 割的數字。按照下面給定的順序,它們代表了下面的信息:

主版本編號

次版本編號

內部版本號

修訂版本號

extern: 如果有涉及到其它程序集的需求,就要使用到 extern偽指令。.Net核心類的代碼位於mscorlib.dll中。除了這個dll之外,當我們的程序需要涉及到大 量其它的dll時,extern偽指令就要排上用場了。

originator: 在轉移到解釋上面程序的本質和意 義之前,這是我們要研究的最後一個偽指令。這個偽指令揭示了創建該dll的標識。它包括了dll的所有者 公鑰的8個字節。它顯然是一個散列值。

讓我們以一種不同的方式一步一步地溫習到目前為止我們 所做的事情。

(a)我們開始於一個我們能夠編寫的最簡單的程序。這個程序被稱為a.cs,並包括 了下面的代碼:

a.cs

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

(b)然後我們使用下面的命令運行C#編譯器。

>csc a.cs

因此,會創建名為a.exe的exe文件。

(c)在可執行體中,我們運行一個名為 ildasm的程序,它是由Microsoft提供的:

>ildasm /out=a.txt a.exe

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