可执行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等等)?
Java项目生成可执行jar包exe文件以及在Windows下的安装文件
windows下如何将Python文件打包成.exe可执行文件