Как набрать двоичные инструкции Вернуться к заявлениям или выражениям с использованием библиотеки ASM?

StackOverflow https://stackoverflow.com/questions/4223359

Вопрос

Я пытаюсь разобрать 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. Другой вариант для одной и той же работы будет Джавад.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top