Understanding C programs using the Combined C Graph representation
- 1 January 1994
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 172-180
- https://doi.org/10.1109/icsm.1994.336777
Abstract
The process of program comprehension is often aided by the use of static analysis tools to provide a maintainer with different views of the code. Each view however often requires a different intermediate program representation, leading to redundancies and repetition of information. A solution is to develop a single intermediate representation which contains sufficient information to construct each program view. This paper describes the Combined C Graph (CCG), a fine-grained intermediate representation for programs written in the C language from which program slices, call graph, flow-sensitive data flow, definition-use and control dependence views can be easily constructed. The CCG allows the representation of embedded side effects and control flows and value returning functions with value parameters. The effects of pointer parameters are also modelled. Construction of the CCG makes use of the PERPLEX C analysis tool which produces a generic Prolog fact base representation of the source code. Existing data flow analysis techniques are extended to allow the computation of flow-sensitive data flow analysis information.Keywords
This publication has 7 references indexed in Scilit:
- A combined representation for the maintenance of C programsPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2002
- A unified interprocedural program representation for a maintenance environmentPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2002
- Interprocedural slicing using dependence graphsACM Transactions on Programming Languages and Systems, 1990
- Dependence analysis for pointer variablesACM SIGPLAN Notices, 1989
- On the adequacy of program dependence graphs for representing programsPublished by Association for Computing Machinery (ACM) ,1988
- The program dependence graph and its use in optimizationACM Transactions on Programming Languages and Systems, 1987
- The program dependence graph in a software development environmentACM SIGPLAN Notices, 1984