35

Is there a nice place for learning the JVM bytecode instruction set. The specification perhaps and maybe some tutorials?

I ask because I would like to design a toy language and a compiler for it that generates JVM bytecode.

Thanks for your knowledge and perhaps googling.

4

9 回答 9

23

A good reference for Java bytecode specification is the The Java Virtual Machine Specification.

See Chapter 4. The class File Format and Chapter 6. The Java Virtual Machine Instruction Set.

于 2008-12-11T00:41:50.260 回答
11

A little more "graphic" explanation, IBM developer works: Understanding bytecode makes you a better programmer.

于 2008-12-11T00:56:55.347 回答
4

《 Java 虚拟机编程》一书解释了 JVM 指令集以及如何为其编写代码。它还介绍了一个名为 Oolong 的字节码汇编器,我一直无法下载。但是,您可以使用Oolong 的前身Jasmin。本质上,你编写一个带有指令的文本文件,Jasmin 会输出一个 .class 文件。这本书出版于 1999 年,但它仍然是对 VM 的良好而温和的介绍。

于 2009-01-01T16:26:39.883 回答
4

Also useful are the javap disassembler and bytecode manipulation frameworks like ASM and BCEL, even if all you want to do is verify your classes.

于 2008-12-11T00:50:03.317 回答
3

Java 虚拟机规范是一个很好的起点。

请参阅第 4 章类文件格式。更新涵盖了自第 2 版制作以来添加的新属性。

于 2009-03-08T19:13:31.990 回答
2

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

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

于 2009-03-08T19:06:32.273 回答
2

或许可以查看Preon 关于如何解析 Java 类文件的示例。它在 Java 对象模型中具有相当完整的字节码表示。

于 2009-09-26T07:38:49.610 回答
2

该规范的新版本已发布:

Java 虚拟机规范,Java SE 7 版

这个新增的内容确实排除了人们可能会或可能不会觉得有用的Java 编程语言概念一章。有关规范第二版中的该章节,请参见此处。

于 2013-02-13T16:02:47.053 回答
1

这有点专业,但这里有一个关于如何优化生成的字节码以在 JVM 上运行的在线演示。它是在最近的JVM 语言峰会上提出的。InfoQ收集了该会议的演讲集,这可能对想要在 JVM 上提出一种语言(或了解已经完成的工作)的人有所帮助。

于 2008-12-11T14:44:23.193 回答