因为那里有很多JIT实现,每个JIT都会发出本机代码。那么为什么没有人制作像JIT2EXE这样的工具来将本机代码保存到本机可执行文件中呢?
答案 0 :(得分:5)
问题有点模糊,因为你还没有明确指出你所说的语言,在我的.NET领域,.NET可执行文件在运行时被预先加工以加快加载时间。代码可以通过称为NGEN的进程生成为本机代码,该进程接受.NET IL代码并在二进制的过程中将其转换,其中处理器可以理解该代码。通常NGEN代码存储在'C:\ Windows \ Assembly \ NativeImages_ {version} '中的文件夹中,其中版本代表.NET Framework版本。请看看杰弗里·里希特(Jeffrey Richter)CodeGuru关于NGEN的信息,以及可以使用它的地方以及何时使用它。在Codeproject上查看关于本地二进制代码统计/比较的文章,以及Daniel Pistelli的here。
答案 1 :(得分:3)
你的意思是ngen?
答案 2 :(得分:1)
事实上,有许多Java(或其他解释语言)到本机编译器。有没有听说过gcj?
还有一些混合编译器可以将一些关键部分编译为本机代码,并将其他部分保存为字节码以节省空间。哈里萨十多年前这样做了。
首先将Java代码编译为C代码,然后将其传递给常规C编译器以利用其优化。这样的代码可以变得非常快。
当然,这种提前编译(与即时编译相反)取消了字节码形式的一些优点(特别是可移植性和低内存占用),因此实际应用程序相当罕见
答案 3 :(得分:1)
你在问题中陈述的内容(“没有人制作像JIT2EXE这样的工具”)并不完全正确: