Как набрать двоичные инструкции Вернуться к заявлениям или выражениям с использованием библиотеки ASM?
-
26-09-2019 - |
Вопрос
Я пытаюсь разобрать Java Bytecodes в промежуточную структуру данных для последующего использования. Я наткнулся в ASM. Это мощно и стабильно. Тем не менее, мне трудно перевести двоичные инструкции обратно в нормальное выражение и высказывание Java. Может кто-нибудь указать на сторону для меня?
Структура данных сделки может выглядеть так:
ClassInfo
- FieldInfo
- MethodInfo
-- ForLoopStatement
-- WhileStatement
--- AssignmentExpression
--- FunctionCallExpression
...
В основном это не более, чем абстракция языка Java.
Спасибо.
Решение
В DB4O мы использовали иронично называемый Bloat Library Чтобы получить полностью построенный AST от корпуса метода. Он работал достаточно хорошо для нас, но он не основан на ASM.
Другие советы
Почему бы не остаться с Java Bytecode, как и, и если вам нужна читаемая форма человека, просто разобрать ее? По крайней мере, ваш вопрос не дает понятно, почему сам Java Bytecode не может быть промежуточной структурой данных, используемой для хранения.
Официальный выпуск Java SDK имеет инструмент под названием javap который преобразует Bytecode обратно в источник Java. Другой вариант для одной и той же работы будет Джавад.