Data structures and algorithm analysis in C
Data structures and algorithm analysis in C
Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parametric shape analysis via 3-valued logic
ACM Transactions on Programming Languages and Systems (TOPLAS)
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Recursive data structure profiling
Proceedings of the 2005 workshop on Memory system performance
Dynamic Data Structure Analysis for Java Programs
ICPC '06 Proceedings of the 14th IEEE International Conference on Program Comprehension
The Minimum Description Length Principle (Adaptive Computation and Machine Learning)
The Minimum Description Length Principle (Adaptive Computation and Machine Learning)
Shape analysis with inductive recursion synthesis
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Dynamic shape analysis via degree metrics
Proceedings of the 2009 international symposium on Memory management
DDT: design and evaluation of a dynamic program analysis for optimizing data structure usage
Proceedings of the 42nd Annual IEEE/ACM International Symposium on Microarchitecture
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Juggrnaut: Graph Grammar Abstraction for Unbounded Heap Structures
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
We investigate whether dynamic data structures in pointer programs can be identified by analysing program executions only. This paper describes a first step towards solving this problem by applying machine learning and pattern recognition techniques to analyse executions of C programs. By searching for repeating temporal patterns in memory caused by multiple invocations of data-structure operations, we are able to first locate and then identify these operations. Applying a prototypic tool implementing our approach to pointer programs that employ, e.g., lists, queues and stacks, we show that the identified operations can accurately determine the data structures used.