Можно ли предположить, что в каждой инструкции соблюдается атомарность? Например,
mov dword ptr [eax], 0
Движение либо идет успешно, либо не происходит. в середине выполняемой инструкции нет прерывания.
Верно ли мое предположение?
Я знаю, что текущий процессор может выполнять инструкции не по порядку, а компиляция будет генерировать коды не по порядку с точки зрения оптимизации. Следовательно, движение будет выполнено в порядке, отличном от того, что я написал. Но это не имеет значения, меня беспокоит то, что после выполнения отдельной инструкции ее нельзя прервать.
EDIT: меня беспокоит атомарность любой отдельной инструкции, а не специальной инструкции или ветви инструкций чтения-записи, я просто использую mov < / em> например.
- Каждый раз, когда какое-либо ядро процессора выполняет инструкцию (сложение, перемещение, сдвиг и т. Д.), Может ли выполнение быть прервано?
- Есть ли неопределенное состояние в регистре или памяти (размер машинного слова).
Или какой наименьший элемент может обеспечить атомарность аппаратного обеспечения?
K
является константой (немедленной), тогда никакая память не задействуется, кроме фактического текста программы. (Надеюсь, вы не пытаетесь рассуждать о поведении самомодифицирующегося кода в присутствии SMP / потоков ...) Таким образом, другие потоки не могут даже увидеть или быть затронутыми этими инструкциями ... - person R.. GitHub STOP HELPING ICE   schedule 11.04.2011