Abstracting Abstract Machines

被引:12
作者
Van Horn, David [1 ]
Might, Matthew [2 ]
机构
[1] Northeastern Univ, Boston, MA 02115 USA
[2] Univ Utah, Salt Lake City, UT 84112 USA
关键词
Languages; Theory; abstract machines; abstract interpretation; FLOW-ANALYSIS;
D O I
10.1145/1932681.1863553
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We describe a derivational approach to abstract interpretation that yields novel and transparently sound static analyses when applied to well-established abstract machines. To demonstrate the technique and support our claim, we transform the CEK machine of Felleisen and Friedman, a lazy variant of Krivine's machine, and the stack-inspecting CM machine of Clements and Felleisen into abstract interpretations of themselves. The resulting analyses bound temporal ordering of program events; predict return-flow and stack-inspection behavior; and approximate the flow and evaluation of by-need parameters. For all of these machines, we find that a series of well-known concrete machine refactorings, plus a technique we call store-allocated continuations, leads to machines that abstract into static analyses simply by bounding their stores. We demonstrate that the technique scales up uniformly to allow static analysis of realistic language features, including tail calls, conditionals, side effects, exceptions, first-class continuations, and even garbage collection.
引用
收藏
页码:51 / 62
页数:12
相关论文
共 50 条
  • [41] Abstracting Strings for Model Checking of C Programs
    Lauko, Henrich
    Olliaro, Martina
    Cortesi, Agostino
    Rockai, Petr
    APPLIED SCIENCES-BASEL, 2020, 10 (21): : 1 - 33
  • [42] Abstract Domains of Affine Relations
    Elder, Matt
    Lim, Junghee
    Sharma, Tushar
    Andersen, Tycho
    Reps, Thomas
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2014, 36 (04): : 1 - 73
  • [43] Abstract interpretation of reactive systems
    Dams, D
    Gerth, R
    Grumberg, O
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 1997, 19 (02): : 253 - 291
  • [44] TSL: A System for Generating Abstract Interpreters and its Application to Machine-Code Analysis
    Lim, Junghee
    Reps, Thomas
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2013, 35 (01):
  • [45] IMPROVING ABSTRACT INTERPRETATIONS BY COMBINING DOMAINS
    CODISH, M
    MULKERS, A
    BRUYNOOGHE, M
    DELABANDA, MG
    HERMENEGILDO, M
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 1995, 17 (01): : 28 - 44
  • [46] Decomposing Bytecode Verification by Abstract Interpretation
    Bernardeschi, C.
    De Francesco, N.
    Lettieri, G.
    Martini, L.
    Masci, P.
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2008, 31 (01):
  • [47] Generating Specifications for Recursive Methods by Abstracting Program States
    Wasser, Nathan
    DEPENDABLE SOFTWARE ENGINEERING: THEORIES, TOOLS, AND APPLICATIONS, SETTA 2015, 2015, 9409 : 243 - 257
  • [48] On Various Abstract Understandings of Abstract Interpretation
    Cousot, Patrick
    PROCEEDINGS 2015 INTERNATIONAL SYMPOSIUM ON THEORETICAL ASPECTS OF SOFTWARE ENGINEERING, 2015, : 2 - 3
  • [49] Abstract Extensionality: On the Properties of Incomplete Abstract Interpretations
    Bruni, Roberto
    Giacobazzi, Roberto
    Gori, Roberta
    Garcia-Contreras, Isabel
    Pavlovic, Dusko
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2020, 4 (POPL):
  • [50] Pluggable abstract domains for analyzing embedded software
    Cooprider, Nathan
    Regehr, John
    ACM SIGPLAN NOTICES, 2006, 41 (07) : 44 - 53