Cómo asignar instrucciones binarias de nuevo a las declaraciones o expresiones que utilizan la biblioteca ASM?
-
26-09-2019 - |
Pregunta
Estoy tratando de analizar los códigos de bytes de Java en una estructura de datos intermedio para su uso posterior. Me tropecé en ASM. Es potente y estable. Sin embargo, estoy dificultades para traducir las instrucciones binarias atrás a la expresión de Java normal y declaraciones. Podría punto cualquiera hacia fuera una dirección para mí?
La estructura de datos acuerdo podría tener este aspecto:
ClassInfo
- FieldInfo
- MethodInfo
-- ForLoopStatement
-- WhileStatement
--- AssignmentExpression
--- FunctionCallExpression
...
Básicamente se trata de nada más que una abstracción del lenguaje Java.
Gracias.
Solución
En DB4O estábamos usando la irónicamente llamada la hinchazón biblioteca para recuperar una totalmente construido AST de un cuerpo de método. Funcionó bastante bien para nosotros, pero no se basa en ASM.
Otros consejos
¿Por qué no se quedó con el código de bytes de Java tal como es y si necesita un formato legible por humanos, sólo tiene que desmontar? Al menos su pregunta no tiene claro por qué Java bytecode sí misma no puede ser la estructura de datos, un intermediario utilizado para el almacenamiento.
El lanzamiento oficial de Java SDK tiene una herramienta llamada javap código de bytes que convierte de nuevo en fuente de Java. Otra opción para el mismo trabajo sería javad .