首 页文章中心下载中心繁體中文
设为首页
加入收藏
联系我们
您当前的位置:开源盛世-源代码下载网 -> 文章中心 -> 网站开发类 -> NET 技术 -> .NET基础 -> 文章内容 退出登录 用户管理
栏目导航
· .NET基础 · Asp.Net
· 综合应用 · 数据库应用
· XML 应用 · 控件开发和使用
热门文章
· Tab Control控件使用...
· 学生档案管理系统
· [图文] 排列组合公式
· UTF-8与GB2312之间的...
· DirectShow下载安装...
· Virtual PC 在PAE模...
· Windows2000终端服务...
· MapInfo上的GIS系统...
· kalman filter 卡尔...
· Windows2000终端服务...
相关文章
· IL系列文章之二:Ma...
IL系列文章之一:Say Hello to IL
作者:佚名  来源:vscodes.com整理  发布时间:2005-12-16 13:06:11  发布人:Polaris

减小字体 增大字体


IL系列文章之一:

Say Hello to IL

.net出现这么就了,很多人已经能够熟练的运用C#进行软件开发,也有一些像我这样的人喜欢去研究一下.net的内部运行机制。我这里来谈谈ILIntermediate Language),虽然我们不太可能直接用IL来开发软件,但是IL的确是了解.net内部机制的一道大门。

Visual Studio.NET给我们提供了两个与IL有关的工具ilasmildasm,他们是IL编译器和IL反编译器,有关它们的使用方法大家可以参看MSND文档,我这里就不再说了。不过在开始谈论IL,我还要谈下CLR基础。

CLRCommon Language Runtime),MSDN文档也有一些对它的描述,我这里的描述只是对MSDN文档的一些补充,以使读者更好的理解CLRCLR.net框架的核心,可以把它想象成是一个可以运行IL codeCPU。就普通的Intel CPU而言,它是依靠RegisterStack来运行程序,而CLR则是一个只依靠Stack来运行程序的CPU。举一个例子,如果我们要进行12的运算,则IL指令会现将12移到Stack的顶部再进行add运算,add12Stack顶部移走,再将运算结果3放到Stack顶部。CLRStack不是以Byte的形式存在,也不是以Word的形式存在,而是SlotSlot是一种能够容纳任何类型实体的结构,就是说我们能够把int放到Stack中,也可以把float放到Stack中,Stack中的内容可能是int->float->object A->object B->int,一切皆有可能。实体被移到Stack顶部的过程叫做loading(简写成ld),把实体从Stack顶部移走的过程叫做storing(简写成st)。

好,现在让我们开始和IL亲密接触吧!看看我们的第一个IL程序——“Hello World”。

 

.assembly PrintString {}

 

//Console.WriteLine("Hello, World)"

 

.method static public void main() il managed

{

    .entrypoint      // IL不用把Main()函数定义为程序的入口,而是用.entrypoint定义入口

    .maxstack 8    //定义Stack的最大深度为8

 

    // *****************************************************

    // Console.WriteLine("Hello, World)";

    // *****************************************************

    ldstr "Hello, World"        //将“Hello World”这个String移到Stack顶部

 

    // Call static System.Console.Writeline function

    // WriteLine()把StringStack顶部移走,不返回任何值

    call   void [mscorlib]System.Console::WriteLine (class System.String)

 

    // *****************************************************

    ret

}

 

保存程序为Hello.il,然后就是编译它。打开“Visual Studio .NET命令提示”,切换到Hello.il所在的目录,输入“ilasm Hello.il”Enterilasm会提示你编译成功,输入“Hello”,Enter。就可以看到我们的程序的运行结果了。


End of《IL系列文章之一:Say Hello to IL》

[] [返回上一页] [打 印] [收 藏]
 
∷相关“IL系列文章之一:Say Hello to IL”文章评论∷
(评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 网站目录 鄂ICP备06007162
开源盛世 版权所有Copyright © 2003-2005 VSCodes.Com. All Rights Reserved.