A symbolic analysis framework for static analysis of imperative programming languages

被引:6
|
作者
Burgstaller, Bernd [1 ]
Scholz, Bernhard [2 ]
Blieberger, Johann [3 ]
机构
[1] Yonsei Univ, Seoul 120749, South Korea
[2] Univ Sydney, Sydney, NSW 2006, Australia
[3] Vienna Univ Technol, A-1040 Vienna, Austria
基金
澳大利亚研究理事会; 新加坡国家研究基金会;
关键词
Static program analysis; Symbolic analysis; Path expression algebra; Programming language semantics; INDUCTION VARIABLES; EXECUTION; CHECKING;
D O I
10.1016/j.jss.2011.11.1039
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We present a generic symbolic analysis framework for imperative programming languages. Our framework is capable of computing all valid variable bindings of a program at given program points. This information is invaluable for domain-specific static program analyses such as memory leak detection, program parallelization, and the detection of superfluous bound checks, variable aliases and task deadlocks. We employ path expression algebra to model the control flow information of programs. A homomorphism maps path expressions into the symbolic domain. At the center of the symbolic domain is a compact algebraic structure called supercontext. A supercontext contains the complete control and data flow analysis information valid at a given program point. Our approach to compute supercontexts is based purely on algebra and is fully automated. This novel representation of program semantics closes the gap between program analysis and computer algebra systems, which makes supercontexts an ideal symbolic intermediate representation for all domain-specific static program analyses. Our approach is more general than existing methods because it can derive solutions for arbitrary (even intra-loop and nested loop) nodes of reducible and irreducible control flow graphs. We prove the correctness of our symbolic analysis method. Our experimental results show that the problem sizes arising from real-world applications such as the SPEC95 benchmark suite are tractable for our symbolic analysis framework. (C) 2011 Elsevier Inc. All rights reserved.
引用
收藏
页码:1418 / 1439
页数:22
相关论文
共 50 条
  • [21] Towards the integration of symbolic and numerical static analysis
    Venet, Arnaud
    VERIFIED SOFTWARE: THEORIES, TOOLS, EXPERIMENTS, 2008, 4171 : 227 - 236
  • [22] JDART: A Dynamic Symbolic Analysis Framework
    Luckow, Kasper
    Dimjasevic, Marko
    Giannakopoulou, Dimitra
    Howar, Falk
    Isberner, Malte
    Kahsai, Temesghen
    Rakamaric, Zvonimir
    Raman, Vishwanath
    TOOLS AND ALGORITHMS FOR THE CONSTRUCTION AND ANALYSIS OF SYSTEMS (TACAS 2016), 2016, 9636 : 442 - 459
  • [23] A Generalized Search Construct for Imperative Languages to Facilitate Declarative Programming
    Smith, James
    Henderson, Chris
    Bansal, Ajay
    INTERNATIONAL JOURNAL OF SEMANTIC COMPUTING, 2022, 16 (03) : 315 - 338
  • [24] Static analysis of Linear Logic programming
    Andreoli, JM
    Pareschi, R
    Castagnetti, T
    NEW GENERATION COMPUTING, 1997, 15 (04) : 449 - 481
  • [25] Static analysis of Linear Logic programming
    Jean -Marc Andreoli
    Remo Pareschi
    Tiziana Castagnetti
    New Generation Computing, 1997, 15 : 449 - 481
  • [26] ACTIVATION ANALYSIS VIA STATIC PROGRAMMING
    KOVANIC, P
    SLUNECKO, J
    ATOMKERNENERGIE, 1969, 14 (04): : 249 - &
  • [27] Static Program Analysis for String Manipulation Languages
    Arceri, Vincenzo
    Mastroeni, Isabella
    ELECTRONIC PROCEEDINGS IN THEORETICAL COMPUTER SCIENCE, 2019, (299): : 19 - 33
  • [28] Analysis and Modeling of the Governance in General Programming Languages
    Canovas Izquierdo, Javier Luis
    Cabot, Jordi
    PROCEEDINGS OF THE 12TH ACM SIGPLAN INTERNATIONAL CONFERENCE ON SOFTWARE LANGUAGE ENGINEERING (SLE '19), 2019, : 179 - 183
  • [29] Static analysis usage for customizable semantic checks of C and C plus plus programming languages constraints
    Ignatyev, Valery
    2014 SEVENTH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE TESTING, VERIFICATION AND VALIDATION WORKSHOPS (ICSTW 2014), 2014, : 241 - 242
  • [30] Static memory management for logic programming languages
    Phan, Quan
    LOGIC PROGRAMMING, PROCEEDINGS, 2006, 4079 : 465 - 466