International audienceSemantics preserving compilation of low-level C programs is challenging because their semantics is implementation defined according to the C standard. This paper presents the proof of an enhanced and more concrete memory model for the CompCert C compiler which assigns a definite meaning to more C programs. In our new formally verified memory model, pointers are still abstract but are nonetheless mapped to concrete 32-bit integers. Hence, the memory is finite and it is possible to reason about the binary encoding of pointers. We prove that the existing memory model is an abstraction of our more concrete model thus validating formally the soundness of CompCert's abstract semantics of pointers. We also show how to adapt t...
A memory model is an important component of the formal semantics of imperative programming languages...
A memory model is an important component of the formal semantics of imperative programming languages...
A memory model is an important component of the formal semantics of imperative programming languages...
International audienceSemantics preserving compilation of low-level C programs is challenging becaus...
International audienceSemantics preserving compilation of low-level C programs is challenging becaus...
International audienceSemantics preserving compilation of low-level C programs is challenging becaus...
International audienceSemantics preserving compilation of low-level C programs is challenging becaus...
International audienceThe CompCert C compiler guarantees that the target program behaves as the sour...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
International audienceThe CompCert C compiler guarantees that the target program behaves as the sour...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
A memory model is an important component of the formal semantics of imperative programming languages...
A memory model is an important component of the formal semantics of imperative programming languages...
A memory model is an important component of the formal semantics of imperative programming languages...
International audienceSemantics preserving compilation of low-level C programs is challenging becaus...
International audienceSemantics preserving compilation of low-level C programs is challenging becaus...
International audienceSemantics preserving compilation of low-level C programs is challenging becaus...
International audienceSemantics preserving compilation of low-level C programs is challenging becaus...
International audienceThe CompCert C compiler guarantees that the target program behaves as the sour...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
International audienceThe CompCert C compiler guarantees that the target program behaves as the sour...
International audienceThe CompCert C compiler provides the formal guarantee that the observable beha...
A memory model is an important component of the formal semantics of imperative programming languages...
A memory model is an important component of the formal semantics of imperative programming languages...
A memory model is an important component of the formal semantics of imperative programming languages...