Extending the C/C++ Memory Model with Inline Assembly
Programs written in C/C++ often include inline assembly : a snippet of architecture-specific assembly code used to access low-level functionalities that are impossible or expensive to simulate in the source language. Although inline assembly is widely used, its semantics has not yet been formally studied. In this paper, we overcome this deficiency by investigating the effect of inline assembly on the consistency semantics of C/C++ programs. We propose the first memory model of the C++ Programming Language with support for inline assembly for Intel’s x86 including non-temporal stores and store fences . We argue that previous provably correct compiler optimizations and correct compiler mappings should remain correct under such an extended model and we prove that this requirement is met by our proposed model.
Authors
- Paulo Emílio de Vilhena (ORCID: https://orcid.org/0000-0001-7379-310X)
- Viktor Vafeiadis (ORCID: https://orcid.org/0000-0001-8436-0334)
- Azalea Raad (ORCID: https://orcid.org/0000-0002-2319-3242)
- Ori Lahav (ORCID: https://orcid.org/0000-0003-4305-6998)
Institutions
- Tel Aviv University (IL)
- Max Planck Institute for Software Systems (DE)
- Imperial College London (GB)
Publication Details
- Journal
- Proceedings of the ACM on Programming Languages
- Published
- 2024-10-08
- DOI
- https://doi.org/10.1145/3689749
- Primary Topic
- Parallel Computing and Optimization Techniques
- Type
- article
- Field-Weighted Citation Impact
- 0.00
Funders
- UK Research and Innovation
- European Commission
- Engineering and Physical Sciences Research Council