Matches in SemOpenAlex for { <https://semopenalex.org/work/W73325334> ?p ?o ?g. }
- W73325334 abstract "Static Single Assignment enables the efficient implementation of many important decompiler components, including expression propagation, preservation analysis, type analysis, and the analysis of indirect jumps and calls. Source code is an essential part of all software development. It is so valuable that when it is not available, it can be worthwhile deriving it from the executable form of computer programs through the process of decompilation. There are many applications for decompiled source code, including inspections for malware, bugs, and vulnerabilities; interoperability; and the maintenance of an application that has some or all source code missing. Existing machine code decompilers, in contrast to existing decompilers for Java and similar platforms, have significant deficiencies. These include poor recovery of parameters and returns, poor handling of indirect jumps and calls, and poor to nonexistent type analysis. It is shown that use of the Static Single Assignment form (SSA form) enables many of these deficiencies to be overcome. SSA enables or assists with: • data How analysis, particularly expression propagation; • the identification of parameters and returns, without assuming ABI compliance; • preservation analysis (whether a location is preserved across a call), which is needed for analysing parameters and return locations; • type analysis, implemented as a sparse data flow problem; and • the analysis of indirect jumps and calls. Expression propagation is a key element of a decompiler, since it allows long sequences of individual instruction semantics to be combined into more complex, high level statements. Parameters, returns, and types are features of high level languages that do not appear explicitly in machine code programs, hence their recovery is important for readability and the ability to recompile the generated code. In addition, type analysis is either absent from existing machine code decompilers, or is limited to a relatively simple propagation of types from library function calls. The analysis of indirect jumps and calls is important for finding all code in a machine code program, and enables the translation of important high level program elements such as switch statements, assigned gotos, virtual function calls, and calls through function pointers. Because of these challenges, machine code decompilers are the most interesting case. Existing machine code decompilers are weak at identifying parameters and returns, particularly where parameters are passed in registers, or the calling convention is non standard. A general analysis of parameters and returns is demonstrated, using new devices such as Collectors. These analyses become more complex in the presence of recursion. The elimination of redundant parameters and returns are shown to be global analyses, implying that for a general decompiler, procedures can not be finalised until all other procedures are analysed. Full type analysis is discussed, where the semantics of individual instructions, as well as information from library calls, contribute to the solution. A sparse, iterative, data How based approach is compared with the more common constraint based approach. The former requires special functions to handle the multiple constraints that result from overloaded operators such as addition and subtraction. Special problems arise with aggregate types (arrays and structures), and address taking of variables. Indirect branch instructions are often handled at instruction decode time. Delaying analysis until the program is represented in SSA form allows more powerful techniques such as expression propagation to be used. This results in a simpler, more general analysis, at the cost of having to throwaway some results and restart some analyses. It is shown that this technique easily extends to handling Fortran assigned gotos, which can not be effectively analysed at decode time. The analysis of indirect call instructions has the potential for enabling the recovery of object oriented virtual function calls. Many of the techniques presented in this thesis have been verified with the Boomerang open source decompiler. The goal of extending the state of the art of machine code decompilation has been achieved. There are of course still some areas left for future work. The most promising areas for future research have been identified as range analysis and alias analysis." @default.
- W73325334 created "2016-06-24" @default.
- W73325334 creator A5012871867 @default.
- W73325334 date "2007-01-01" @default.
- W73325334 modified "2023-09-26" @default.
- W73325334 title "Static Single Assignment for Decompilation" @default.
- W73325334 cites W107748845 @default.
- W73325334 cites W1227352821 @default.
- W73325334 cites W1491178396 @default.
- W73325334 cites W1517583815 @default.
- W73325334 cites W1521580745 @default.
- W73325334 cites W1524758670 @default.
- W73325334 cites W1527047961 @default.
- W73325334 cites W1544837488 @default.
- W73325334 cites W1551330847 @default.
- W73325334 cites W1557487237 @default.
- W73325334 cites W1558427762 @default.
- W73325334 cites W1567046609 @default.
- W73325334 cites W1577379309 @default.
- W73325334 cites W1582456956 @default.
- W73325334 cites W1586926914 @default.
- W73325334 cites W1587655883 @default.
- W73325334 cites W1604666619 @default.
- W73325334 cites W1727650458 @default.
- W73325334 cites W1820253543 @default.
- W73325334 cites W1964962870 @default.
- W73325334 cites W1973829697 @default.
- W73325334 cites W1988095917 @default.
- W73325334 cites W1988949749 @default.
- W73325334 cites W1988985613 @default.
- W73325334 cites W1990717911 @default.
- W73325334 cites W1998988707 @default.
- W73325334 cites W1999346024 @default.
- W73325334 cites W2000722076 @default.
- W73325334 cites W2006267758 @default.
- W73325334 cites W2008015263 @default.
- W73325334 cites W2010204191 @default.
- W73325334 cites W2021085621 @default.
- W73325334 cites W2047764386 @default.
- W73325334 cites W2064820590 @default.
- W73325334 cites W2065826255 @default.
- W73325334 cites W2067872353 @default.
- W73325334 cites W2068094728 @default.
- W73325334 cites W2073882597 @default.
- W73325334 cites W2084338221 @default.
- W73325334 cites W2086148325 @default.
- W73325334 cites W2089045626 @default.
- W73325334 cites W2089294198 @default.
- W73325334 cites W2093397547 @default.
- W73325334 cites W2097166325 @default.
- W73325334 cites W2102890180 @default.
- W73325334 cites W2105341394 @default.
- W73325334 cites W2111049501 @default.
- W73325334 cites W2112482891 @default.
- W73325334 cites W2114754412 @default.
- W73325334 cites W2115516441 @default.
- W73325334 cites W2115912902 @default.
- W73325334 cites W2122684504 @default.
- W73325334 cites W2128223360 @default.
- W73325334 cites W2128832779 @default.
- W73325334 cites W2130975451 @default.
- W73325334 cites W2134312016 @default.
- W73325334 cites W2136538087 @default.
- W73325334 cites W2141097255 @default.
- W73325334 cites W2147692697 @default.
- W73325334 cites W2149216329 @default.
- W73325334 cites W2153179875 @default.
- W73325334 cites W2153185479 @default.
- W73325334 cites W2153297607 @default.
- W73325334 cites W2160255280 @default.
- W73325334 cites W2160848149 @default.
- W73325334 cites W2162270818 @default.
- W73325334 cites W2163935347 @default.
- W73325334 cites W2650054517 @default.
- W73325334 cites W3148529197 @default.
- W73325334 cites W40753860 @default.
- W73325334 cites W60370665 @default.
- W73325334 cites W76990466 @default.
- W73325334 cites W86082734 @default.
- W73325334 cites W1489332957 @default.
- W73325334 cites W1585157883 @default.
- W73325334 cites W2142898116 @default.
- W73325334 cites W2157550427 @default.
- W73325334 cites W256812502 @default.
- W73325334 hasPublicationYear "2007" @default.
- W73325334 type Work @default.
- W73325334 sameAs 73325334 @default.
- W73325334 citedByCount "28" @default.
- W73325334 countsByYear W733253342012 @default.
- W73325334 countsByYear W733253342013 @default.
- W73325334 countsByYear W733253342014 @default.
- W73325334 countsByYear W733253342015 @default.
- W73325334 countsByYear W733253342016 @default.
- W73325334 countsByYear W733253342019 @default.
- W73325334 countsByYear W733253342020 @default.
- W73325334 countsByYear W733253342021 @default.
- W73325334 crossrefType "journal-article" @default.
- W73325334 hasAuthorship W73325334A5012871867 @default.
- W73325334 hasConcept C111919701 @default.
- W73325334 hasConcept C124101348 @default.