dotnet学习笔记二 - 运行.net程序的秘密,dotnet学习,otnet学习笔,tnet学习笔记,net学习笔记二,et学习笔记二-,t学习笔记二-运,学习笔记二-运行,习笔记二-运行.,笔记二-运行.n,记二-运行.ne,二-运行.net,-运行.net程,运行.net程序,行.net程序的,.net程序的秘 dotnet学习笔记二 - 运行.net程序的秘密----编程资料集中营--八角123--bajiao123.com
编程资料集中营
 | 网站首页 | 文章中心 | 编程资料2 | 软件下载 | BT下载 | 八卦星闻 | 音乐在线 | 在线游戏 | 免费电影 | 进入问吧 | 
dotnet学习笔记二 - 运行.net程序的秘密,.NETFramework给我们提供了良好的开发平台。有很好的类库,可以跨语言,跨平台等等。但是他的内部实现细节是怎样的呢?.NET编译出来的exe文件并不是机器码,它是怎样和CLR结合起来的呢?下面就让我们揭开这个小秘密。首先做一个简单的.NET应用,把它编译成EXE文件。然后用VisualStudio6.0带的工具Depends把它打开。如下图:这里可以,
您现在的位置: 编程资料,学习资料,c,c++,vc,vc++,java,jsp,j2ee,j2me,asp,php >> 文章中心 >> .NET 专区 >> NET 技术 >> 文章正文
【字体:
dotnet学习笔记二 - 运行.net程序的秘密   进入问吧

本站地址:http://www.bajiao123.com

作者:admin    文章来源:本站    点击数:    更新时间:2007-6-7    

dotnet学习笔记二 - 运行.net程序的秘密

    DWORD   cUnmappedPE,                // Size of memory mapped code

    LPWSTR  pImageNameIn,               // -> Executable Name

    LPWSTR  pLoadersFileName,           // -> Loaders Name

    LPWSTR  pCmdLine

一目了然,pUnmappedPE和cUnmappedPE就是.net编译后的中间代码的内存缓冲和长度。pImageNameIn就是这个EXE的名字,pLoadersFileName是载入者的名字,pCmdLine就是命令参数。有了这几个参数我们就可以猜到.net将中间代码编译后放入到PE文件中,再加入一段代码直接执行MSCOREE.DLL的_CorExeMain,参数就是中间代码的内存指针。JIT就把这段中间代码编译成机器代码执行。

_CorExeMain2代码不长,简单总结一些,做了如下的5步工作:

1.         验证签名。

2.         初始化CLR环境

3.         创建了一个代表EXE文件的PEFile对象

4.         使用SystemDomain的静态方法执行这个PEFile。

5.         执行后,做一些清除工作,退出。

 

很明显,上面5个步骤里最重要,最关键的就是第4步了,究竟做了什么呢?有兴趣的朋友可以去看微软的CLI代码,我在以后的文章中也会进一步分析。


上一页  [1] [2] [3] 下一页

   

进入问吧

本站地址:http://www.bajiao123.com

文章录入:admin    责任编辑:admin 
高级搜索
编程资料集中营