返回
Decompilation of Java bytecode to Prolog by partial evaluation
DOI:10.1016/j.infsof.2009.04.010.png)
摘要
En 中文
Reasoning about Java bytecode (JBC) is complicated due to its unstructured control-flow, the use of three-address code combined with the use of an operand stack, etc. Therefore, many static analyzers and model checkers for JBC first convert the code into a higher-level representation. In contrast to traditional decompilation, such representation is often not Java source, but rather some intermediate language which is a good input for the subsequent phases of the tool. Interpretive decompilation consists in partially evaluating an interpreter for the compiled language (in this case JBC) written in a high-level language with respect to the code to be decompiled. There have been proofs-of-concept that interpretive decompilation is feasible, but there remain important open issues when it comes to decompile a real language such as JBC. This paper presents, to the best of our knowledge, the first modular scheme to enable interpretive decompilation of a realistic programming language to a high-level representation, namely of JBC to Prolog. We introduce two notions of optimality, which together require that decompilation does not generate code more than once for each program point. We demonstrate the impact of our modular approach and optimality issues on a series of realistic benchmarks. Decompilation times and decompiled program sizes are! linear with the size of the input bytecode program. This demonstrates empirically the scalability, of modular decompilation of JBC by partial evaluation. (C) 2009 Elsevier B.V. All rights reserved.
Keyword:
Program transformation
Partial evaluation
Decompilation
Interpreters
Java bytecode
Logic programming
AI总结
对已上传原文的论文进行重点信息的提取,主要内容包括:简要概述、研究摘要、背景介绍、关键亮点、图文解析、展望与总结。
期刊
IF:
4.3
论文数:
3.8K
被引数:
7.7K
机构
引用论文
The effect of intrathecal baclofen on the lower urinary tract in paraplegia鞘内注射巴氯芬对截瘫患者下尿路的影响
Spinal Cord
IF0
没有更多内容

