WEB开发网
开发学院软件开发C语言 《C# to IL》第二章 IL基础 阅读

《C# to IL》第二章 IL基础

 2009-06-01 08:31:09 来源:WEB开发网   
核心提示: 在exe文件上执行ildasm后,我们观察一下该程序所生成的IL代码,《C# to IL》第二章 IL基础(2),先排除一部分代码——它们对我们理解IL是没有任何帮助的——包括一些注释、伪指令和函数,剩下的IL代码,在IL中,不能做出类的名

在exe文件上执行ildasm后,我们观察一下该程序所生成的IL代码。先排除一部分代码——它们对我们理解IL是没有任何帮助的——包括一些注释、伪指令和函数。剩下的IL代码,则和原始的代码尽可能的保持一样。

Edited a.il

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

Output

hi

bye

通过研究IL代码本身来掌握IL这门技术的好处是,我们从C#编译器那里学习到如何编写相当好的IL代码。找不到比C#编译器更权威的“大师”来教导我们关于IL的知识。

创建静态函数abc的规则,与创建其它函数是相同的,诸如Main或vijay。因为abc是一个静态函数,所以我们必须在.method伪指令中使用修饰符static。

当我们想调用一个函数时,必须依次提供以下信息:

返回的数据类型

类的名称

被调用的函数名称

参数的数据类型

同样的规则还适用于当我们调用基类的.ctor函数的时候。在函数名称的前面写出类的名称是必须的。在IL中,不能做出类的名称事先已经建立的假设。类的默认名称是我们在调用函数时所在的类。

上一页  1 2 3 4 5 6 7  下一页

Tags:to IL 第二章

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