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

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

 2009-05-29 08:31:17 来源:WEB开发网   
核心提示: Outputhell 你一定想知道为什么我们会编写出这么难看的程序,在迷雾驱散之前你需要保持耐心,(翻译) 《C# to IL》第一章 IL入门(9),所有的一切就要开始有意义了,我们将逐个解释新引进的函数和特性,即a.exe, .subsystem: 这个指令用于指定可执行体运行在什么操

Output

hell

你一定想知道为什么我们会编写出这么难看的程序。在迷雾驱散之前你需要保持耐心,所有的一切就要开始有意义了。我们将逐个解释新引进的函数和特性。

.ctor: 我们引进了一个新的函数.ctor,它调用了WriteLine函数来显示hell1,但是它没有被调用。.ctor涉及到了构造函数。

rtspecialname: 这个特性会告诉运行时——函数的名称是特殊的,它会以一种特殊的方式被对待。

specialname: 这个特性会提示编译器和工具——函数是特殊的。运行时可能选择忽略这个特性。

instance: 一个常规的函数会被一个实例函数调用。这样一个函数与一个对象关联,不同于静态方法,后者关联到一个类。

在合适的时候,为函数选择特定名称的原因会变得明朗。

ldarg.0: 这是一个汇编器指令,它加载this指针或第0个参数的地址到执行栈上。我们随后将详细解释ldarg.0。

mscorlib: 在上面的程序中,函数.ctor会被基类System.Object调用。通常,函数的名称以包括代码的库的名称作为前缀。这个库的名称被放置在方括号中。在这个例子中,它是可选的——因为mscorlib.dll是默认的库,并且它包括了.NET所需要的大部分类。

.maxstack: 这个伪指令指定了在一个方法被调用时,能够出现在计算栈上的元素的最大数量。

.module: 所有的IL文件必须是一个逻辑实体的一部分,或它们的组合体,我们将这些实体称为模块(module)。文件被添加到使用了.module伪指令的模块中。模块的名称可能被规定为aa.exe,但是可执行文件的名称和前面保持一样,即a.exe。

.subsystem: 这个指令用于指定可执行体运行在什么操作系统上。这是另一种指定可执行体所代表的种类的方式。一些数字值和它们对应的操作系统如下所示:

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

Tags:翻译 to IL

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