Operational semantics with semicommutations

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 mecha...

Full description

Saved in:
Bibliographic Details
Published inJournal of logical and algebraic methods in programming Vol. 121; p. 100677
Main Authors Maarand, Hendrik, Uustalu, Tarmo
Format Journal Article
LanguageEnglish
Published Elsevier Inc 01.06.2021
Subjects
Online AccessGet full text

Cover

Loading…
More Information
Summary: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.
ISSN:2352-2208
DOI:10.1016/j.jlamp.2021.100677