Earlier, static slices were used but now mainly dynamic slices are being used which further reduces the program size. In 1984, Weiser has introduced the concept of slicing. debugging, reverse engineering, software testing, software maintenance, program understanding etc. It is used in a number of applications such as program analysis, program. It is a very important part of software development and maintenance. It is an alternative approach to develop reusable components from existing software. Program slicing is one of the techniques of program analysis that allows an analyst to automatically extract portions of programs relevant to the program being analyzed. The universal decompiling machine is a language and machine independent module that analyzes the low-level intermediate code and transforms it into a high-level representation available in any high-level language, and analyzes the structure of the control flow graph(s) and transform them into graphs that make use of high-level control structures. The front-end is a machine dependent module that parses the binary program, analyzes the semantics of the instructions in the program, and generates an intermediate low-level representation of the program, as well as a control flow graph of each subroutine. A decompiler is composed of several phases which are grouped into modules dependent on language or machine features. These techniques are based on compiler and optimization theory, and are applied to decompilation in a unique way these techniques have never before been published. Techniques for writing reverse compilers or decompilers are presented in this thesis. The PDG supports incremental optimization, permitting transformations to be triggered by one another and applied only to affected dependences. As an example, an incremental approach to modifying data dependences resulting from branch deletion or loop unrolling is introduced. Program transformations that require interaction of the two dependence types can also be easily handled with our representation. The PDG allows transformations such as vectorization, that previously required special treatment of control dependence, to be performed in a manner that is uniform for both control and data dependences. Since dependences in the PDG connect computationally related parts of the program, a single walk of these dependences is sufficient to perform many optimizations. Many traditional optimizations operate more efficiently on the PDG. Control dependences are derived from the usual control flow graph. Control dependences are introduced to analogously represent only the essential control flow relationships of a program. Data dependences have been used to represent only the relevant data flow relationships of a program. In this paper we present an intermediate program representation, called the program dependence graph (PDG), that makes explicit both the data and control dependences for each operation in a program. This abstraction is a step towards control of the cost and complexity of formal verification of EVM smart contracts. We structure bytecode sequences into blocks of straight-line code and create a program logic to reason about these. In this paper we extend an existing EVM formalisation in Isabelle/HOL by a sound program logic at the level of bytecode. Formal verification can provide the highest level of confidence about the correct behaviour of smart contracts. Errors in smart contracts have led and will lead to loss or harm. Smart contracts can carry financial value, and are increasingly used for safety-, security-, or mission-critical purposes. These smart contracts run on the Ethereum Virtual Machine (EVM) and can be used to encode agreements, transfer assets, and enforce integrity conditions in relationships between parties. The Ethereum blockchain offers smart contracts, which are small programs defined, executed, and recorded as transactions in the blockchain transaction history. Blockchain technology has increasing attention in research and across many industries.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |