CompCertS: A Memory-Aware Verified C Compiler Using a Pointer as Integer Semantics
The CompCert C compiler provides the formal guarantee that the observable behaviour of the compiled code improves on the observable behaviour of the source code. In this paper, we present a formally verified C compiler, CompCertS , which is essentially the CompCert compiler, albeit with a stronger f...
Gespeichert in:
Veröffentlicht in: | Journal of automated reasoning 2019-08, Vol.63 (2), p.369-392 |
---|---|
Hauptverfasser: | , , |
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | The
CompCert
C compiler provides the formal guarantee that the observable behaviour of the compiled code improves on the observable behaviour of the source code. In this paper, we present a formally verified C compiler,
CompCertS
, which is essentially the
CompCert
compiler, albeit with a stronger formal guarantee: it gives a semantics to more programs and ensures that the memory consumption is preserved by the compiler.
CompCertS
is based on an enhanced memory model where, unlike
CompCert
but like
Gcc
, the binary representation of pointers can be manipulated much like integers and where, unlike
CompCert
, allocation may fail if no memory is available. The whole proof of
CompCertS
is a significant proof-effort and we highlight the crux of the novel proofs of 12 passes of the back-end and a challenging proof of an essential optimising pass of the front-end. |
---|---|
ISSN: | 0168-7433 1573-0670 |
DOI: | 10.1007/s10817-018-9496-y |