《C# to IL》第二章 IL基础
2009-06-01 08:31:09 来源:WEB开发网在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中,不能做出类的名称事先已经建立的假设。类的默认名称是我们在调用函数时所在的类。
- ››Illustrator CS6 打造孔雀花纹的字体
- ››TOscilloscope 仿Windows任务管理器CPU使用记录组...
- ››Illustrator教程:设计制作几何花瓣LOGO
- ››Illustrator实例教程:漂亮证卡变幻线的制作
- ››Illustrator文字教程:制作漂亮质感描边字
- ››Illustrator鼠绘:渐变工具运用绘制金属闹钟
- ››Illustrator鼠绘:教你画一个可爱卡通宝宝教程
- ››Illustrator简单四步做透明气泡教程
- ››Illustrator教程:制作漂亮的新货吊牌
- ››Illustrator教程:改变圆角矩形中一个圆角半径
- ››Illustrator教程:如何用网格工具绘制花瓣
- ››Illustrator涂抹命令打造文字草图特效
更多精彩
赞助商链接