Это решение звучит так, как будто оно предназначено для системы, в которой значение постоянно увеличивается или уменьшается, а не произвольно изменяется.
Считывая максимум / минимум / максимум в системе, где значение увеличивается, выможно быть уверенным, что значение не перенесено, например (для однозначного слова) 0,9
становится 1,0
.Код будет выглядеть примерно так:
read high into reg2 # Get high value.
set reg0 to reg2 minus 1 # Force entry in to loop.
while reg0 is not equal to reg2: # Repeat until consecutive highs are same.
set reg0 to reg2 # Transfer high.
read low into reg1 # Read low.
read high into reg2 # Read next high.
# Now reg0/reg1 contains high/low.
В любой другой ситуации, когда значение может произвольно измениться, вам понадобится какая-то операция test-and-set для отдельного слова, эффективно реализующая мьютекс низкого уровнязащитить двойное слово.