您现在的位置是:首页 >技术交流 >Mono里运行C#脚本41—编译MonoEmbed::gimme()调用的过程网站首页技术交流

Mono里运行C#脚本41—编译MonoEmbed::gimme()调用的过程

caimouse 2025-03-26 00:01:02
简介Mono里运行C#脚本41—编译MonoEmbed::gimme()调用的过程

前面已经分析了一下怎么嵌入内部调用的函数,如下文:
Mono里运行C#脚本34—内部函数调用的过程
https://mysoft.blog.csdn.net/article/details/145335991?spm=1001.2014.3001.5502

但是下面的代码编译时,怎么样样处理呢?
call string class MonoEmbed::gimme()

这行代码是在Main () 的第一行代码。
所以在编译这个函数时,就会对函数 MonoEmbed::gimme()进行编译。
也就是说在Main()函数进行JIT阶段,就会对函数 MonoEmbed::gimme()进行编译,但不会在此阶段生成它的JIT代码。

当Main函数进行JIT时遇到这行代码,就会在函数mono_method_to_ir里面处理。
由于这行指令是call指令,所以会在下面的代码进行处理:
    case MONO_CEE_CALL:
    case MONO_CEE_CALLVIRT: {
        ...
        fsig = mono_method_signature_internal (cmethod);
        ...

当运行到这行代码时,就会查

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。