代码之家  ›  专栏  ›  技术社区  ›  Winston Chen

如何使用asm库将二进制指令映射回语句或表达式?

  •  1
  • Winston Chen  · 技术社区  · 14 年前

    我试图将Java字节码解析成中间数据结构,以便以后使用。我偶然发现了ASM。它强大而稳定。然而,我很难将二进制指令翻译回正常的Java表达式和语句。有人能给我指个方向吗?

    交易数据结构可能如下所示:

    ClassInfo
    - FieldInfo
    - MethodInfo
    -- ForLoopStatement
    -- WhileStatement
    --- AssignmentExpression
    --- FunctionCallExpression
    ...
    

    基本上,它只不过是Java语言的抽象。

    谢谢您。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Jb Evain    14 年前

    在db4o,我们使用的是具有讽刺意味的 BLOAT library 从方法体中检索完全构造的AST。它对我们来说已经足够好了,但它不是基于ASM的。

        2
  •  1
  •   Saul    14 年前

    为什么不停留在Java字节码中,如果你需要一个人类可读的形式,只需拆解它?至少你的问题并不能说明为什么Java字节码本身不能是用于存储的中间数据结构。

    官方Java SDK发布有一个工具叫做 javap 它将字节码转换回Java源代码。对于同一个工作的另一个选择是 javad