Java字节码规范

36

有没有一个适合学习JVM字节码指令集的好地方?可以提供规范文件和一些教程吗?

我问这个问题是因为我想设计一个玩具语言和编译器,并生成JVM字节码。

感谢您的知识和可能的搜索。

9个回答

23

你需要查看JVM规范而不是其他的规范。 - RobotHumans

12

自从IBM的链接失效后,可以在Archive.org上找到《理解字节码使你成为更好的程序员》一文。 - Tim Smith

5

这本书《Java虚拟机编程》讲解了JVM指令集以及如何为其编写代码。它还介绍了一个名为Oolong的字节码汇编器,但我无法下载。不过,你可以使用Jasmin,它是Oolong的前身。你只需编写一份包含指令的文本文件,Jasmin就会生成一个.class文件。尽管这本书是1999年出版的,但它仍然是VM的良好和温和的入门介绍。


1
Jasmin已经不再维护,并且缺乏对许多类文件特性的支持。我建议使用Krakatau Assembler,它与Jasmin向后兼容,但更加强大。(声明:我是作者)。 - Antimony

4

另外还有一些有用的工具,比如javap反编译器以及字节码操作框架,例如ASMBCEL。即使你只想验证你的类,这些工具也很实用。


3

如果您想了解更多关于Java虚拟机规范的内容,可以参考Java虚拟机规范

有关类文件格式的详细信息,请查看第4章《类文件格式》。更新内容涵盖了自第二版以来新增的属性。


2
一份新版本的规范已经发布:
《Java虚拟机规范,Java SE 7版》
这个新版本不包括关于Java编程语言概念的章节,这对人们可能有用也可能没有用。第二版规范中可以查看该章节,链接在这里

2

链接失效:没有该名称的存储库。 - GKFX
谢谢GKFX,已经修复了。 - Wilfred Springer

2

首先,我建议从您的语言生成Java代码。

这将使阅读和调试变得更简单。


1

这是一个更加专业的话题,但这里有一个在线演示,介绍如何优化生成的字节码以在JVM上运行。它是在最近的JVM语言峰会上展示的。InfoQ有该会议的演讲集合,对于想要在JVM上开发语言(或者想了解已经完成的工作)的人可能会有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接