将JIT转换为EXE?

时间:2010-02-27 11:54:37

标签: jit

因为那里有很多JIT实现,每个JIT都会发出本机代码。那么为什么没有人制作像JIT2EXE这样的工具来将本机代码保存到本机可执行文件中呢?

4 个答案:

答案 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?

http://gcc.gnu.org/java/

还有一些混合编译器可以将一些关键部分编译为本机代码,并将其他部分保存为字节码以节省空间。哈里萨十多年前这样做了。

http://www.usenix.org/publications/library/proceedings/coots97/full_papers/muller/muller_html/usenix.html

首先将Java代码编译为C代码,然后将其传递给常规C编译器以利用其优化。这样的代码可以变得非常快。

当然,这种提前编译(与即时编译相反)取消了字节码形式的一些优点(特别是可移植性和低内存占用),因此实际应用程序相当罕见

答案 3 :(得分:1)

你在问题​​中陈述的内容(“没有人制作像JIT2EXE这样的工具”)并不完全正确:

http://en.wikipedia.org/wiki/AOT_compiler