Отправлен: 07.02.2005, 10:49
Вопрос задал: Orlangur (статус: Читатель)
Всего ответов отправлено: 3
Отвечает: DSota
Здравствуйте, Orlangur!
Используется редко. Означает, что выполняя следующую команду процессор захватит шину данных и не позволит другим устройствам (ну второй процессор, или аппаратура, использующая ДМА) обращаться к той же ячейке памяти...
Его примечательность - за ним могут идти только команды обработки данных (типа add, or, sub, etc.), и один из операндов обязательно в памяти. В других случаях генерируется прерывание #UD - неправильная команда... - Свойство иногда используется для своих целей.
Ответ отправил: DSota (статус: Студент)
Отправлен: 07.02.2005, 11:26
Отвечает: Boriss
Здравствуйте, Orlangur!
Префикс имеет смысл использовать, если системной шиной управляют несколько устройств, например, другой процессор. Сигнал lock выдается процессором (по Вашему указанию) при работе с ресурсами, которые могут быть разделены, например, чтение - модификация - запись. Это: bts,btr,, xchg, add, or, adc, inc ....
lock
add a2
Ответ отправил: Boriss (статус: Профессионал)
Отправлен: 07.02.2005, 12:37
Отвечает: Undertaker
Здравствуйте, Orlangur!
LOCK - это однобайтный префикс, который может предшествовать любой команде.
LOCK заставляет процессор выработать сигнал блокировки шины на время выполнения последующей команды, что делает шину недоступной для любого внешнего устройства или события, включая прерывания и передачу данных.
Эта команда была предусмотрена для поддержки мультипроцессорных систем с разделенными ресурсами. В такого рода системах доступ к этим ресурсам контролируется обычно через аппаратное и программное обеспечение с использованием семафоров.
Эту команду следует использовать только с целью предотвращения прерывания операций по пересылке данных. Поэтому ее следует употреблять только перед командами XCHG, MOV и MOVS.
Ответ отправил: Undertaker (статус: 3-ий класс)
Отправлен: 09.02.2005, 11:26