【发布时间】:2014-09-24 05:05:52
【问题描述】:
我试图了解 JIT 编译器的工作原理。我已经了解了运行时动态代码生成的基本思想,但是我不清楚生成的代码是如何与程序链接的?通过动态链接库?如果有人可以分享一个 JIT 编译器的“hello world”示例以供学习,那就太好了。
【问题讨论】:
-
不,通过动态生成的代码段,基本上是通过函数指针到达的。
-
jit 通常将机器代码发送到它正在运行的程序的内存中,并以一种或另一种方式跳转到这些指令。 (here 是一个小例子)
-
您应该记录自己关于 JVM 的内部结构、Java 虚拟机、Sun/Oracle 的文档非常好且具有解释性,而且 Java 非常流行。谈到实现,JIT 编译器通常会使用关联数组、树和堆栈等基础数据结构生成一些类似 C 的代码。请记住,无论您从什么开始,最终都需要为您的机器运行一些程序集。
-
@nos 谢谢!参考正是我想要的。