我想编写一个JIT编译器,只是想知道从理论上讲是否可以用托管代码编写整个程序。特别是,一旦将汇编器生成为字节数组,如何跳入汇编器以开始执行?
我不相信有-尽管您有时可以在不安全的上下文中使用托管语言进行工作,但我不相信您可以通过指针合成委托-以及如何跳到生成的代码?
—
Damien_The_Unbeliever 2012年
@Damien:不安全的代码不会让您写入函数指针吗?
—
Henk Holterman'3
使用“如何将控制权动态转移到非托管代码”这样的标题,可能会降低被关闭的风险。它看起来也更重要。生成代码不是问题。
—
Henk Holterman'3
最简单的想法是将字节数组写到文件中,然后让操作系统运行它。毕竟,您需要一个编译器,而不是一个解释器(也可以,但是更复杂)。
—
弗拉德(Vlad)2012年
JIT编译完所需的代码后,可以使用Win32 API分配一些非托管内存(标记为可执行文件),将编译后的代码复制到该内存空间中,然后使用IL
—
Jack P.
calli
操作码来调用编译后的代码。