Come mappare istruzioni binarie di nuovo a dichiarazioni o espressioni che utilizzano Biblioteca ASM?
-
26-09-2019 - |
Domanda
Sto cercando di analizzare Java bytecode in una struttura di dati intermedio per un uso successivo. Mi sono imbattuto in ASM. E 'potente e stabile. Tuttavia, sono momento difficile tradurre le istruzioni binarie di nuovo al normale espressione java e le dichiarazioni. Qualcuno potrebbe Precisi un senso per me?
La struttura di dati trattati può assomigliare a questo:
ClassInfo
- FieldInfo
- MethodInfo
-- ForLoopStatement
-- WhileStatement
--- AssignmentExpression
--- FunctionCallExpression
...
In sostanza è niente di più che un'astrazione del linguaggio Java.
Grazie.
Soluzione
A db4o stavamo usando il ironicamente chiamato BLOAT biblioteca per recuperare un completamente costruito AST da un corpo del metodo. Ha funzionato abbastanza bene per noi, ma non è basata su ASM.
Altri suggerimenti
Perché non rimanere con Java bytecode così com'è e se avete bisogno di un formato leggibile, è sufficiente smontare esso? Almeno la tua domanda non lo rende chiaro perché il bytecode Java in sé non può essere la struttura di dati dell'intermediario utilizzati per lo stoccaggio.
Il rilascio ufficiale di Java SDK ha uno strumento chiamato javap che converte bytecode di nuovo in sorgente di Java. Un'altra opzione per lo stesso lavoro potrebbe essere Javad .