1

我正在尝试将 java 字节码解析为中间数据结构以供以后使用。我偶然发现了 ASM。它功能强大且稳定。但是,我很难将二进制指令转换回普通的 java 表达式和语句。有人可以为我指出一个方向吗?

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

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

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

谢谢你。

4

2 回答 2

2

在 db4o,我们使用具有讽刺意味的BLOAT 库从方法体中检索完全构造的 AST。它对我们来说工作得很好,但它不是基于 ASM。

于 2010-11-19T13:42:32.860 回答
1

为什么不按原样保留 Java 字节码,如果您需要人类可读的形式,只需反汇编它?至少您的问题没有说明为什么 Java 字节码本身不能成为用于存储的中间数据结构。

官方 Java SDK 版本有一个名为javap的工具,可以将字节码转换回 Java 源代码。同一工作的另一个选择是javad

于 2010-11-19T10:13:22.647 回答