Как отобразить бинарные инструкции обратно в операторы или выражения, используя библиотеку ASM? - PullRequest
1 голос
/ 19 ноября 2010

Я пытаюсь разобрать байт-коды Java в промежуточную структуру данных для последующего использования.Я наткнулся на ASM.Это мощный и стабильный.Однако мне трудно переводить двоичные инструкции обратно в обычные выражения и операторы Java.Кто-нибудь может указать мне направление?

Структура данных сделки может выглядеть следующим образом:

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

По сути, это не более чем абстракция языка Java.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 ноября 2010

В db4o мы использовали иронически называемую библиотеку BLOAT для извлечения полностью сконструированного AST из тела метода.Это сработало достаточно хорошо для нас, но не основано на ASM.

1 голос
/ 19 ноября 2010

Почему бы не остаться с байт-кодом Java как есть, и если вам нужна удобочитаемая форма, просто разберите ее?По крайней мере, ваш вопрос не дает понять, почему сам байт-код Java не может быть промежуточной структурой данных, используемой для хранения.

Официальный выпуск Java SDK содержит инструмент под названием javap , который преобразует байт-код обратно в исходный код Java.Другой вариант для той же работы будет Джавад .

...