举例图中, 一个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挪用过程
,