2016
DOI: 10.1007/s10817-016-9369-1
|View full text |Cite
|
Sign up to set email alerts
|

A Formal C Memory Model for Separation Logic

Abstract: The core of a formal semantics of an imperative programming language is a memory model that describes the behavior of operations on the memory. Defining a memory model that matches the description of C in the C11 standard is challenging because C allows both high-level (by means of typed expressions) and low-level (by means of bit manipulation) memory accesses. The C11 standard has restricted the interaction between these two levels to make more effective compiler optimizations possible, at the expense of maki… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
13
0

Year Published

2019
2019
2023
2023

Publication Types

Select...
4
1

Relationship

1
4

Authors

Journals

citations
Cited by 8 publications
(13 citation statements)
references
References 51 publications
0
13
0
Order By: Relevance
“…In the above definition, symbolic memory models are simple liftings of the concrete ones. In the implementation, we employ heavy optimisation: for example, in Gillian-C, we have developed a complex tree representation of symbolic blocks inspired by [29], enabling tractable reasoning about arrays of symbolic size.…”
Section: Compositional Memory Models: Javascript and Cmentioning
confidence: 99%
See 1 more Smart Citation
“…In the above definition, symbolic memory models are simple liftings of the concrete ones. In the implementation, we employ heavy optimisation: for example, in Gillian-C, we have developed a complex tree representation of symbolic blocks inspired by [29], enabling tractable reasoning about arrays of symbolic size.…”
Section: Compositional Memory Models: Javascript and Cmentioning
confidence: 99%
“…Despite a large body of work on separation logic for C, we were unable to find a partial C memory model that captures the negative resource in its entirety. The nearest is probably the CH20 formalism [29], which handles freed locations but not block bounds. Negative resource for freed locations has also been used in incorrectness logic [39], and for block bounds in a program logic for WebAssembly [48].…”
Section: Introductionmentioning
confidence: 99%
“…C Semantics. There has been a considerable body of work on formal semantics for the C language, including several large projects that aimed to formalize substantial subsets of C [17,20,30,37,41,44], and projects that focused on specific aspects like its memory model [10,13,27,28,31,38,40,41], weak memory concurrency [4,36,43], non-local control flow [35], verified compilation [37,48], etc.…”
Section: Related Workmentioning
confidence: 99%
“…The focus of this paper-non-determinism in C expressions-has been treated formally a number of times, notably by Norrish [44], Ellison and Rosu [17], Krebbers [31], and Memarian et al [41]. The first three have in common that they model the sequence point restriction by keeping track of the locations that have been written to.…”
Section: Related Workmentioning
confidence: 99%
See 1 more Smart Citation