Abstract

We propose an operational semantics where the execution of instructions of a program is not necessarily in the order in which they are given in the program. In other words, an instruction might be executed before its preceding instructions have been executed. The idea is that such an execution mechanism can capture some optimizations that a compiler or a runtime environment might apply to the program. In our framework, the allowed reorderings are described by a binary commutation relation on the set of instructions, or, more generally, by a semicommutation relation. We then further extend this basic framework to allow more intricate reordering behaviours. As an experiment, we describe a fragment of the multicopy-atomic ARM memory model in this framework and validate a prototype of it against a number of litmus-tests.

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.