Object code verification
نویسنده
چکیده
Object code is a program of a processor language and can be directly executed on a machine. Program verification constructs a formal proof that a program correctly implements its specification. Verifying object code therefore ensures that the program which is to be executed on a machine is correct. However, the nature of processor languages makes it difficult to specify and reason about object code programs in a formal system of logic. Furthermore, a proof of the correctness of an object code program will often be too large to construct manually because of the size of object code programs. The presence of pointers and computed jumps in object code programs constrains the use of automated tools to simplify object code verification. This thesis develops an abstract language which is expressive enough to describe any sequential object code program. The abstract language supports the definition of program logics in which to specify and verify object code programs. This allows the object code programs of any processor language to be verified in a single system of logic. The abstract language is expressive enough that a single command is enough to describe the behaviour of any processor instruction. An object code program can therefore be translated to the abstract language by replacing each instruction with the equivalent command of the abstract language. This ensures that the use of the abstract language does not increase the difficulty of verifying an object code program. The verification of an object code program can be simplified by constructing an abstraction of the program and showing that the abstraction correctly implements the program specification. Methods for abstracting programs of the abstract language are developed which consider only the text of a program. These methods are based on describing a finite sequence of commands as a single, equivalent, command of the abstract language. This is used to define transformations which abstract a program by replacing groups of program commands with a single command. The abstraction of a program formed in this way can be verified in the same system of logic as the original program. Because the transformations consider only the program text, they are suitable for efficient mechanisation in an automated proof tool. By reducing the number of commands which must be considered, these methods can reduce the manual work needed to verify a program. The use of an abstract language allows object code programs to be specified and verified in a system of logic while the use of abstraction to simplify programs makes verification practical. As examples, object code programs for two different processors are modelled, abstracted and verified in terms of the abstract language. Features of processor languages and of object code programs which affect verification and abstraction are also summarised.
منابع مشابه
The effect of Code switching on the Acquisition of Object Relative Clauses by Iranian EFL Learners
This study attempted to investigate the impact of teacher’s code-switching on the acquisition of a problematic grammatical structure, namely, object relative clauses, by intermediate EFL learners. Moreover, a secondary objective of the study was to determine the EFL learners’ attitudes and opinions regarding the effectiveness of teacher’s code-switching in their learning of a specific aspect of...
متن کاملAutomated Verification With and Without Reference Behavior
Automated verification of software built from data abstraction is rendered difficult by reference behavior both in the client code and implementation code. In the client code, object encapsulation through component development in modern programming languages remains a problem, because clients can violate the abstraction boundary by accessing object internals through aliased object references. I...
متن کاملFormal Representation of Safety Verification Conditions
This paper identifies the software information that must be represented in a formal specification of source code level “safety verification conditions” (SVCs) for an object-oriented software system. The formalization does not necessarily require a notation with object-oriented constructs. In particular, a semantically simpler notation based on typed predicate logic is adequate for representing ...
متن کاملCertificates and Separation Logic
Modular and local reasoning about object-oriented programs has been widely studied for programing languages such as C# and Java. Once source programs have been proven, the next verification challenge is to ensure that the code produced by the compiler is correct. Since verifying a compiler can be extremely complex, this paper uses proof-transforming compilation, an alternative approach which au...
متن کاملObject Code Verification for Safety-critical Railway Control Systems
In this article we describe a method for fully automated object code verification, applicable to railway control systems developed within a framework previously proposed by the authors. This allows us to apply arbitrary off-theshelf compilers in a safety-critical context without having to perform expensive compiler validations. Within the restrictions of the framework, the object code verificat...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1998