码迷,mamicode.com
首页 > Windows程序 > 详细

可执行EXE在windows调用过程

时间:2017-11-16 18:51:49      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:nbsp   代码   ges   font   查找   style   本机   com   str   

举例图中, 一个C#编写的测试程序,

输出两句话分别 : Hello, GoodBye, 介绍其在windows上CLR的调用过程。

技术分享

1.在执行Main方法之前, CLR会检测出Main的代码引用的所有类型。这导致CLR 分配一个内部数据结构来管理对引用类型的访问。

Main方法次调用WriteLine时, JIT函数会被调用,JIT函数负责将方法的IL代码编译成本机CPU指令,

由于IL是即时编译的, 所以CLR这个组件称为JIT编译器

 

2. JIT函数被调用时, 它知道要调用的是哪个方法, 以及具体是什么类型定义了该方法。

然后, JIT会在定义该类型的程序集的元数据中查找被调用方法的IL。

接着,JIT验证IL代码, 并且将IL代码编译成本机CPU指令。本机CPU指令保存到动态分配的内存块中。

然后,JIT回到CLR为类型创建内部数据结构, 找到与被调用方法对应的那条记录,

修改最初对JIT的引用, 使其指向内存块的地址。

最后, JIT 函数跳转到内存块中的代码, 这些代码正式WriteLine方法, 代码执行完成返回时,

会回到Main中的代码, 像往常一样继续执行。

可执行EXE在windows调用过程

标签:nbsp   代码   ges   font   查找   style   本机   com   str   

原文地址:http://www.cnblogs.com/zh7791/p/7845352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!