Advanced Symbolic Analysis for Compilers: New Techniques and by Thomas Fahringer

By Thomas Fahringer

The goal of application research is to instantly confirm the p- perties of a software. instruments of software program improvement, comparable to compilers, p- formance estimators, debuggers, reverse-engineering instruments, software veri?- tion/testing/proving structures, software comprehension structures, and application specializationtoolsarelargelydependentonprogramanalysis. Advancedp- gram research can: aid to ?nd application blunders; notice and song performan- serious code areas; make certain assumed constraints on info aren't violated; tailor a widely used application to fit a speci?c program; reverse-engineer so- ware modules, and so on. A widespread application research approach is symbolic a- lysis, which has attracted giant consciousness for a few years because it isn't really depending on executing a software to ascertain the semantics of a software, and it may possibly yield very dependent formulations of many analyses. in addition, the complexity of symbolic research could be principally self sustaining of the enter information dimension of a application and of the dimensions of the computing device on which this system is being completed. during this ebook we current novel symbolic keep watch over and information ?ow repres- tation recommendations in addition to symbolic thoughts and algorithms to research and optimize courses. software contexts which de?ne a brand new symbolic - scription of software semantics for regulate and information ?ow research are on the middle of our process. we have now solved a couple of difficulties encountered in application research by utilizing software contexts. Our answer equipment are e?cient, flexible, uni?ed, and extra common (they do something about ordinary and abnormal codes) than such a lot present methods.

Show description

Read Online or Download Advanced Symbolic Analysis for Compilers: New Techniques and Algorithms for Symbolic Program Analysis and Optimization PDF

Similar compilers books

Ada 95 Rationale: The Language The Standard Libraries

Ada ninety five, the improved model of the Ada programming language, is now in position and has attracted a lot consciousness in the neighborhood because the foreign general ISO/IEC 8652:1995(E) for the language was once authorized in 1995. The Ada ninety five reason is available in 4 components. The introductory half is a basic dialogue of the scope and goals of Ada ninety five and its significant technical positive aspects.

Conceptual Structures: Knowledge Visualization and Reasoning: 16th International Conference on Conceptual Structures, ICCS 2008 Toulouse, France, July

This e-book constitutes the refereed complaints of the sixteenth foreign convention on Conceptual buildings, ICCS 2008, held in Toulouse, France, in July 2008. the nineteen revised complete papers awarded including 2 invited papers have been conscientiously reviewed and chosen from over 70 submissions. The scope of the contributions levels from theoretical and methodological issues to implementation concerns and functions.

The Functional Treatment of Parsing

Parsing know-how often contains branches, which correspond to the 2 major software components of context-free grammars and their generalizations. effective deterministic parsing algorithms were constructed for parsing programming languages, and rather assorted algorithms are hired for studying normal language.

Introduction to Compiler Construction in a Java World

Immersing scholars in Java and the Java digital desktop (JVM), advent to Compiler building in a Java global allows a deep realizing of the Java programming language and its implementation. The textual content specializes in layout, association, and checking out, assisting scholars study strong software program engineering abilities and turn into greater programmers.

Additional resources for Advanced Symbolic Analysis for Compilers: New Techniques and Algorithms for Symbolic Program Analysis and Optimization

Example text

4. If h ∈ H, r is a symbolic pointer, is a qualifier, and e is a symbolic expression then h ⊕ put(r, , e) ∈ H. 5. If h ∈ H, v is pointer variable, and r is a symbolic pointer, then h ⊕ put(v, ⊥, r) ∈ H. m An element h in H can be written as a ⊕-chain ⊥ l=1 σl where σl is a new, free, or put function. In the further text, σl is also referred as a heap function. The length of chain a |h| is the number of functions σl in chain h. 1 Simple dynamic record manipulation ℓ1 : ℓ2 : ℓ3 : ℓ4 : ℓ5 : ℓ6 : ℓ7 : type bin is record type(bin),allocatable,pointer::LEFT,RIGHT end type bin type(bin),allocatable, pointer :: P1,P2,P3 [s0 = {P 1 = ⊥, P 2 = ⊥, P 3 = ⊥, hc = c, hp0 = hpi }, t0 , p0 ] allocate(P1,P2,P3) [s1 = δ(s0 ; P 1 = c + 1, P 2 = c + 2, P 3 = c + 3, hc = c + 3, hp1 = hp0 ⊕ new(c + 1, bin) ⊕ put(P1, ⊥, c + 1) ⊕ new(c + 2, bin) ⊕put(P2, ⊥, c + 2) ⊕ new(c + 3, bin) ⊕ put(P3, ⊥, c + 3)), t1 = t0 , p1 = p0 ] P1%LEFT := P3 [s2 = δ(s1 ; hp2 = hp1 ⊕ put(c + 1, LEFT, c + 3)), t2 = t1 , p2 = p1 ] P1%RIGHT := P2 [s3 = δ(s2 ; hp3 = hp2 ⊕ put(c + 1, RIGHT, c + 2)), t3 = t2 , p3 = p2 ] P1%RIGHT%LEFT := P3 [ s4 = δ (s3 ; hp4 = hp3 ⊕ put( get(hp3 ,c+1,RIGHT), left,c+3)), t4 = t3 , p4 = p3 ] [s′4 = δ(s4 ; hp′4 = hp3 ⊕ put(c + 2, LEFT, c + 3)), t′4 = t4 , p′4 = p4 ] P3%RIGHT := P2 [s5 = δ(s′4 ; hp5 = hp′4 ⊕ put(c + 3, right, c + 2)), t5 = t′4 , p5 = p′4 ] P2:=nil P3:=nil [s6 = δ(s5 ; P 2 = ⊥, P 3 = ⊥, hp6 = hp5 ⊕ put(P 2, ⊥, ⊥) ⊕ put(P 2, ⊥, ⊥), t6 = t5 , p6 = p5 ] free(P1); [s7 = δ (s6 ; hp7 = hp6 ⊕ free(c + 1)) , t7 = t6 , p7 = p6 ] We introduce a heap function get(h, r, ) to access field from dynamic record r where h is a symbolically described heap and element of H.

A = a, . . }, ti−1 , pi−1 ] ℓi : A(I) = V [si = δ(si−1 ; A = a ⊕ (eval(V, [si−1 , ti−1 , pi−1 ]), eval(I, [si−1 , ti−1 , pi−1 ]))), ti = ti−1 , pi = pi−1 ] we take the symbolic value a ∈ A of variable A and add a new ⊕-function to it. The ⊕-function has two parameters. The first one contains the symbolic value of the right-hand side of the array. The second one is the symbolic value of the index. Both symbolic values are computed by evaluating variables I and V with program context [si−1 , ti−1 , pi−1 ].

2 illustrates a program that supposedly builds a single linked list. However, the program fails to generate the list due to the fact that the reference to the first element is lost. Before evaluating the first statement, the heap variables hp and hc are initialized to ⊥ and 0. The variables I and P do not have a value so far and variable n is set to n. The variables i, P, hc, and hp change their values in each iteration of the loop. Therefore, we have four recurrences induced by variable I, pointer variable P, symbolic counter hc and heap hp.

Download PDF sample

Rated 4.57 of 5 – based on 16 votes