WEB开发网
开发学院软件开发C语言 (翻译) 《C# to IL》第一章 IL入门 阅读

(翻译) 《C# to IL》第一章 IL入门

 2009-05-29 08:31:17 来源:WEB开发网   
核心提示: 注意到,汇编器输出中的改变: Class 1 Methods: 1;Outputhell 伪指令.class之后是类的名称,(翻译) 《C# to IL》第一章 IL入门(7),它在IL中是可选的,让我们通过添加一些类的特性来增强这个类的功能,那么一个字符串——由

注意到,汇编器输出中的改变: 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
      }
}

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:翻译 to IL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接