Welcome

首页 / 软件开发 / .NET编程技术 / [你必须知道的.NET]第十三回:从Hello, world开始认识IL

[你必须知道的.NET]第十三回:从Hello, world开始认识IL2011-03-20 博客园 Anytao本文将介绍以下内容:

IL代码分析方法

Hello, world历史

.NET学习方法论

1.引言

1988年Brian W.Kernighan和Dennis M.Ritchie合著了软件史上的经典巨著《The C programming Language》,我推荐所有的程序人都有机会重温这本历史上的经典之作。从那时起,Hello, world示例就作为了几乎所有实践型程序设计书籍的开篇代码,一直延续至今,除了表达对巨人与历史的尊重,本文也以Hello, world示例作为我们扣开IL语言的起点,开始我们循序渐进的IL认识之旅。

2.从Hello, world开始

首先,当然是展示我们的Hello, world代码,开始一段有益的分享。

using System;
using System.Data;

public class HelloWorld
{
public static void Main()
{
Console.WriteLine("Hello, world.");
}
}

这段代码执行了最简单的过程,向陌生的世界打了一个招呼,那么运行在高级语言背后真相又是什么呢,下面开始我们基于上述示例的IL代码分析。

3.IL体验中心

对编译后的可执行文件HelloWorld.exe应用ILDasm.exe反编译工具,还原HelloWorld的为文本MSIL编码,至于其工作原理我们期望在系列的后续文章中做以交代,我们查看其截图为:

由上图可知,编译后的IL结构中,包含了MANIFEST和HelloWorld类,其中MANIFEST是个附加信息列表,主要包含了程序集的一些属性,例如程序集名称、版本号、哈希算法、程序集模块等,以及对外部引用程序集的引用项;而HelloWorld类则是我们下面介绍的主角。