2012-03-02 50 views
4

在编写针对JVM的编译器时是否存在任何体系结构级文档?也就是说,字节码格式的具体细节,以及从应用程序员的角度来看JVM,当然都被广泛记录。我目前试图弄清楚的是一些模糊的问题的答案,例如:你在哪里获得标准库中所有东西的列表,以便正确处理引用? rt.jar,显然。哪里是?指向由系统属性指定,除非被诸如-bootclasspath之类的选项覆盖。它真的包含了一切吗?可能不会,唉。等等。因此,我最想要的是:在编译到JVM时

  • 操作方法上编写编译器针对JVM,覆盖模糊/沙砾/架构级问题的文档。

  • 有关javac的体系结构(与用户界面相对)或针对以JVM为目标的现有语言之一的编译器的文档。 (由于课程时间,我可以通过源代码翻箱倒柜找出所有问题的答案,我只是在寻找一种方式来加快这一进程。)

无论是否对这些存在吗?

+0

你即将进入一条很滑的路。一旦找出特定JVM实现的所有路径和位置,就可能排除所有替代方案。最好的办法是以最便携的方式查询* current * JVM的路径。看看这个解决方案:http://mindprod.com/jgloss/wherejars.html – 2012-03-02 12:52:30

+0

然而,人们可能会争辩说,rt.jar中的大部分内容与JVM本身几乎没有关系,并且与很多事情有关一些Java API也可能不同,并且无论如何都与另一种语言的编译器无关。 – Ingo 2012-03-02 18:09:43

+0

@Ingo不是真的,首先针对JVM的要点是能够访问所有Java库代码。 – rwallace 2012-03-02 18:58:57

回答

-2

嗯,我看到3种可能性在这里:

  1. 生成Java代码,并用javac编译。

  2. 使用类似ASM或BCEL的库。

  3. 自己生成字节码(即类文件) - 如果你很聪明,你应该能够查找JVM规范和类文件格式。