Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Abstract debugging of higher-order imperative languages
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Automatic discovery of linear restraints among variables of a program
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Bytecode verification on Java smart cards
Software—Practice & Experience
Improving the Results of Static Analyses Programs by Local Decreasing Iteration
Proceedings of the 12th Conference on Foundations of Software Technology and Theoretical Computer Science
SAS '02 Proceedings of the 9th International Symposium on Static Analysis
A static analyzer for large safety-critical software
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Declaring and checking non-null types in an object-oriented language
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Precise and efficient static array bound checking for large embedded C programs
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Engineering a common intermediate representation for the Ovm framework
Science of Computer Programming - Special issue on advances in interpreters, virtual machines and emulators (IVME'03)
An Efficient, Parametric Fixpoint Algorithm for Analysis of Java Bytecode
Electronic Notes in Theoretical Computer Science (ENTCS)
Pentagons: a weakly relational abstract domain for the efficient validation of array accesses
Proceedings of the 2008 ACM symposium on Applied computing
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Boogie: a modular reusable verifier for object-oriented programs
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
Detecting non-cyclicity by abstract compilation into boolean functions
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Self-configuring object-to-relational mapping queries
Proceedings of the 6th international symposium on Principles and practice of programming in Java
Preservation of Proof Obligations from Java to the Java Virtual Machine
IJCAR '08 Proceedings of the 4th international joint conference on Automated Reasoning
Mixing source and bytecode: a case for compilation by normalization
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Automatic modular abstractions for linear constraints
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
SubPolyhedra: A (More) Scalable Approach to Infer Linear Inequalities
VMCAI '09 Proceedings of the 10th International Conference on Verification, Model Checking, and Abstract Interpretation
Inferring Dataflow Properties of User Defined Table Processors
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
A termination analyzer for Java bytecode based on path-length
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 2010 ACM Symposium on Applied Computing
Pentagons: A weakly relational abstract domain for the efficient validation of array accesses
Science of Computer Programming
Perspectives in certificate translation
TGC'10 Proceedings of the 5th international conference on Trustworthly global computing
A parametric segmentation functor for fully automatic and scalable array content analysis
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Practical verification for the working programmer with codecontracts and abstract interpretation
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
A provably correct stackless intermediate representation for Java bytecode
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Static contract checking with abstract interpretation
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
An Abstract Model of Certificate Translation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Magic-sets for localised analysis of Java bytecode
Higher-Order and Symbolic Computation
Static type analysis of pattern matching by abstract interpretation
FMOODS'10/FORTE'10 Proceedings of the 12th IFIP WG 6.1 international conference and 30th IFIP WG 6.1 international conference on Formal Techniques for Distributed Systems
Optimizing data shuffling in data-parallel computation by understanding user-defined functions
NSDI'12 Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation
Spotting code optimizations in data-parallel pipelines through PeriSCOPE
OSDI'12 Proceedings of the 10th USENIX conference on Operating Systems Design and Implementation
Definite expression aliasing analysis for java bytecode
ICTAC'12 Proceedings of the 9th international conference on Theoretical Aspects of Computing
Numerical static analysis with Soot
Proceedings of the 2nd ACM SIGPLAN International Workshop on State Of the Art in Java Program analysis
INSPIRE: the insieme parallel intermediate representation
PACT '13 Proceedings of the 22nd international conference on Parallel architectures and compilation techniques
Hi-index | 0.00 |
We discuss the challenges faced by bytecode analyzers designed for code verification compared to similar analyzers for source code. While a bytecode-level analysis brings many simplifications, e.g., fewer cases, independence from source syntax, name resolution, etc., it also introduces precision loss that must be recovered either via preprocessing, more precise abstract domains, more precise transfer functions, or a combination thereof. The paper studies the relative completeness of a static analysis for bytecode compared to the analysis of the program source. We illustrate it through examples originating from the design and the implementation of Clousot, a generic static analyzer based on Abstract Interpretation for the analysis of MSIL.