Come mappare istruzioni binarie di nuovo a dichiarazioni o espressioni che utilizzano Biblioteca ASM?

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

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.

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top