可执行EXE在windows调用过程

Posted 痕迹-微软MVP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可执行EXE在windows调用过程相关的知识,希望对你有一定的参考价值。

举例图中, 一个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调用过程的主要内容,如果未能解决你的问题,请参考以下文章

怎样在java类中调用带参数的可执行文件(比如:.exe,.sh等等)?

在Windows 中可执行文件的扩展名有

Java项目生成可执行jar包exe文件以及在Windows下的安装文件

windows下如何将Python文件打包成.exe可执行文件

将简单的 Python 脚本转换为 Windows 可执行文件的过程 [重复]

Python生成windows可执行的exe文件