Como mapear instruções binárias de volta às declarações ou expressões usando a Biblioteca ASM?

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

Pergunta

Estou tentando analisar bytecodes java em uma estrutura de dados intermediária para uso posterior. Eu tropecei no ASM. É poderoso e estável. No entanto, tenho dificuldade em traduzir as instruções binárias de volta à expressão e declarações normais de Java. Alguém poderia apontar uma direção para mim?

A estrutura de dados do negócio pode ser assim:

ClassInfo
- FieldInfo
- MethodInfo
-- ForLoopStatement
-- WhileStatement
--- AssignmentExpression
--- FunctionCallExpression
...

Basicamente, nada mais é do que uma abstração da língua Java.

Obrigada.

Foi útil?

Solução

No db4o, estávamos usando o ironicamente chamado Biblioteca bloat recuperar um AST totalmente construído de um corpo de método. Funcionou bem o suficiente para nós, mas não é baseado no ASM.

Outras dicas

Por que não ficar com o Java Bytecode como é e se você precisar de uma forma legível por humanos, basta desmontá -lo? Pelo menos sua pergunta não deixa claro por que o Java ByteCode em si não pode ser a estrutura de dados intermediária usada para armazenamento.

O lançamento oficial do Java SDK tem uma ferramenta chamada javap que converte bytecode de volta na fonte Java. Outra opção para o mesmo trabalho seria Javad.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top