【问题标题】:Java bytecode specification [closed]Java字节码规范[关闭]
【发布时间】:2010-09-26 08:47:05
【问题描述】:

有没有学习JVM字节码指令集的好地方。也许是规范,也许还有一些教程?

我问是因为我想设计一种玩具语言和一个用于生成 JVM 字节码的编译器。

感谢您的知识和谷歌搜索。

【问题讨论】:

    标签: java jvm bytecode


    【解决方案1】:

    【讨论】:

    • 您需要查看 JVM 规范而不是其他规范
    【解决方案2】:

    也许可以查看Preon's example on how to parse a Java class file。它在 Java 对象模型中具有相当完整的字节码表示。

    【讨论】:

    • 链接失效:没有同名的仓库。
    • 感谢 GKFX,已修复。
    【解决方案3】:

    该规范的新版本已经发布:

    The Java Virtual Machine Specification, Java SE 7 Edition

    这一新增内容确实排除了人们可能会或可能不会觉得有用的Java 编程语言概念一章。请参阅 here 了解该规范第二版中的那一章。

    【讨论】:

      【解决方案4】:

      Java Virtual Machine Specification 是一个很好的起点。

      参见第 4 章The class File Format。更新涵盖了自第 2 版以来添加的新属性。

      【讨论】:

        【解决方案5】:

        更多“图形”解释,IBM 开发人员工作:Understanding bytecode makes you a better programmer

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

            • Jasmin 没有维护,并且缺乏对许多类文件功能的支持。我建议改用 Krakatau Assembler,它向后兼容 Jasmin,但功能更强大。 (披露:我写的)。
            【解决方案8】:

            这有点专业,但here 是关于如何优化生成的字节码以在 JVM 上运行的在线演示。它是在最近的JVM Languages Summit 会议上提出的。 InfoQ 有来自那次会议的a collection of presentations,这可能对想要在 JVM 上提出一种语言(或查看已经完成的工作)的人有所帮助。

            【讨论】:

              【解决方案9】:

              javap 反汇编程序和字节码操作框架(如 ASMBCEL)也很有用,即使您只想验证您的类。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2011-03-10
                • 1970-01-01
                • 2014-02-24
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多