前面介绍了mono_jit_init初始化,这个函数非常长,要理解起来还是比较困难。因此改变另外一种方式,先从底层的函数开始,再慢慢来探索mono的底层实现,以及它的实现原理,运行的细节。
Mono要运行exe文件,这里是运行test-embed.exe文件,那么就得认识这个文件,解释这个文件的内容,因此就需要把这个文件加载到内存里,然后采用特定的格式来分解这个文件,获得所有需要运行这个文件的细节。
那么这个文件是怎么打开读取数据的呢?它是调用下面的代码来打开EXE文件的:
MonoFileMap *
mono_file_map_open (const char* name)
{
#ifdef WIN32gunichar2 *wname = g_utf8_to_utf16 (name, -1, 0, 0, 0);MonoFileMap *result;if (wname == NULL)