Abstract: Compilers can introduce serious errors into programs whose source code appears to be correct. Modern compilers are reliable tools but we must resign ourselves to the fact that mistakes will be made by the compiler and we must therefore minimise the risk that those errors go unchecked. Previous attempts at showing the correctness of compilation have either sought to verify the compiler itself or to check the correctness of the compilation through the comparison of intermediate languages. This thesis adopts a novel approach to verifying the correctness of compiler generated code which, while less formal than a compiler correctness proof, does not require any potentially erroneous translations to intermediate languages. The approach taken uses inductive assertions placed in the source code program as the basis for both source and object code verification. The assertions are propagated into the object code program using a technique which integrates abstract control flow analysis with directed graph pattern matching. The propagation technique allows us to produce simple axiomatic specifications of the object language and re-use source code inference rules to verify the object code program. The thesis concludes that the cost of finding compiler errors is disproportionate to the likelihood of errors being introduced and not detected by more traditional software development processes. However, the increasingly stringent standards of certifying authorities and customers demand that compiler correctness is demonstrated. The techniques presented in this thesis show a cost effective way of meeting these demands.
Publication Year: 2001
Publication Date: 2001-01-01
Language: en
Type: article
Access and Citation
Cited By Count: 5
AI Researcher Chatbot
Get quick answers to your questions about the article from our AI researcher chatbot