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

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

編輯:關於C語言

注意到,匯編器輸出中的改變: Class 1 Methods: 1;

Output

hell

偽指令.class之後是類的名稱。它在IL中是可選的,讓我們通過添 加一些類的特性來增強這個類的功能。

a.il

.assembly mukhi {}
.class private auto ansi zzz
{
      .method public hidebysig static void vijay()il managed
      {
            .entrypoint
            ldstr "hell"
            call void System.Console::WriteLine(class System.String)
            ret
      }
}

Output

hell

我們添加了 3個特性到類的偽指令中。

private:這 表示了對類的成員的訪問被約束為只能在當前類中。

auto:這表示類在內存中的布局將只由運行 時來決定,而不是由我們的程序決定。

ansi:源代碼通常被劃分為兩個主要的類別:托管代碼和 非托管代碼。

以諸如C語言編寫的代碼被稱為非托管代碼或不可信任的代碼。我們需要一個特性來 處理非托管代碼和托管代碼之間的互操作。例如,當我們想要在托管和非托管代碼之間轉移字符串時,這 個特性會被使用到。

如果我們跨越托管代碼的邊界並鑽進非托管代碼的領域,那麼一個字符串 ——由2字節Unicode字符組成的數組,將會被轉換為一個ANSI字符串——由1字節 ANSI字符組成的數組;反之亦然。修飾符ansi用於消除托管和非托管代碼之間的轉換。

a.il

.assembly mukhi {}
.class private auto ansi zzz extends System.Object
{
      .method public hidebysig static void vijay()il managed
      {
            .entrypoint
            ldstr "hell"
            call void System.Console::WriteLine(class System.String)
            ret
      }
}

Output

hell

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