¦ДА1¦ Rn1 ¦ 0 ¦ 0 ¦ 0 ¦ Du1 ¦ 0 ¦ 0 ¦ 0 ¦ Dc1 ¦
+---+-----------+---+---+---+-----------+---+---+---+---------+
¦ДА2¦ Rn2 ¦ 0 ¦ 0 ¦ 0 ¦ Du2 ¦ 0 ¦ 0 ¦ 0 ¦ Dc2 ¦
L---+-----------+---+---+---+-----------+---+---+---+---------Поля команды:
Поле Размера определяет размер операндов:
01 - слово
10 - длинное слово
Поля DA1, DA2 определяют, что задается в полях Rn1, Rn2:
0 - в соответствующем поле задан регистр данных
1 - в соответствующем поле задан регистр адреса
Поля Rn1, Rn2 определяют номера регистров, содержащих адреса первого и второго операнда-Приемника. Если операнды перекрываются в памяти, в случае прохождения изменения результат непредсказуем.
Поля Du1, Du2 определяют регистры данных, содержащие
Операнды_замены для записи в первый и второй операнды-Приемники при успешном сравнении.
Поля Dc1, Dc2 определяют регистры данных, содержащие
Операнды_сравнения для первого и второго Приемника.
Если Dc1 и Dc2 задают один и тот же регистр и сравнение было неуспешным, регистр данных загружается из первого операнда-Приемника.
ЗАМЕЧАНИЕ ПО ПРОГРАММИРОВАНИЮ:
Команды CAS и CAS2 могут быть использованы для безопасного обновления в мультипроцессорных средах системных управляющих структур данных.
CHK Контроль попадания в диапазон CHK
с нулевой нижней границей
-----------------------------------------------------Операция: Если (Dn < 0) или (Dn > Источника), то TRAP
Синтаксис: CHK <иа>,Dn
Атрибуты: Размер=(Слово,Длинное слово)
Описание:
Указанный регистр данных сравнивается с 0 и с верхней границей (целым числом в двоично-дополнительном коде).
Если значение регистра меньше 0 или больше верхней границы, процессор возбуждает обработку исключения, при этом номер вектора равен 6, т.е. соответствует исключению по команде CHK.
Коды условия:
X N Z V C
----T---T---T---T---¬
¦ - ¦ * ¦ U ¦ U ¦ U ¦
L---+---+---+---+---N 1, если (Dn < 0); 0, если (Dn > Источника);
иначе неопределен
Z неопределен
V неопределен
C неопределен
X не изменяется
Формат команды:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
----T---T---T---T-----------T-----------T----------------------¬
¦ ¦ ¦ ¦ ¦ ¦ ¦ Исполнительный адрес ¦
¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦Регистр Dn ¦ Размер ¦ Мода Регистр ¦
L---+---+---+---+-----------+-----------+-----------+----------Поля команды:
Поле регистра Dn определяет любой из 8 регистров данных.
Поле Размера определяет размер операндов:
110 - слово
100 - длинное слово
Поле исполнительного адреса определяет способ адресации верхней границы, при этом допустимы только способы адресации данных:
-----------------T----T--------¬-----------------T----T--------¬
¦Способ адресации¦Мода¦Регист𠦦Способ адресации¦Мода¦Регистр ¦
+----------------+----+--------++----------------+----+--------+
¦ Dn (*) ¦000 ¦ном.Dn ¦¦ (xxx).W ¦111 ¦ 000 ¦
+----------------+----+--------++----------------+----+--------+
¦ An ¦ - ¦ - ¦¦ (xxx).L ¦111 ¦ 001 ¦
+----------------+----+--------++----------------+----+--------+
¦ (An) ¦010 ¦ном.An ¦¦ #<данные> ¦111 ¦ 100 ¦
+----------------+----+--------++----------------+----+--------+
¦ (An)+ ¦011 ¦ном.An ¦¦ ¦ ¦ ¦
+----------------+----+--------++----------------+----+--------+
¦ -(An) ¦100 ¦ном.An ¦¦ ¦ ¦ ¦
+----------------+----+--------++----------------+----+--------+
¦ (d{16},An) ¦101 ¦ном.An ¦¦ (d{16},PC) ¦111 ¦ 010 ¦
+----------------+----+--------++----------------+----+--------+
¦ (d{8},An,Xn) ¦110 ¦ном.An ¦¦ (d{8},PC,Xn) ¦111 ¦ 011 ¦
+----------------+----+--------++----------------+----+--------+
¦ (bd,An,Xn) ¦110 ¦ном.An ¦¦ (bd,PC,Xn) ¦111 ¦ 011 ¦
+----------------+----+--------++----------------+----+--------+
¦([bd,An,Xn],od) ¦110 ¦ном.An ¦¦ ([bd,PC,Xn],od)¦111 ¦ 011 ¦
+----------------+----+--------++----------------+----+--------+
¦([bd,An],Xn,od) ¦110 ¦ном.An ¦¦ ([bd,PC],Xn,od)¦111 ¦ 011 ¦
L----------------+----+---------L----------------+----+--------(*) - только длинный операнд.
CHK2 Контроль попадания в диапазон CHK2
-----------------------------------------------------Операция: Если Rn < Источник.Нижняя_граница или
Rn > Источник.Верхняя_граница то TRAP
Синтаксис: CHK2 <иа>,Rn
Атрибуты: Размер=(Байт,Слово,Длинное слово)
Описание:
Производится проверка попадания значения указанного регистра данных в диапазон, определяемый парой чисел, расположенных по заданному исполнительному адресу. Значение Нижней_границы находится по исполнительному адресу, адрес значения Верхней_границы превышает исполнительный адрес на размер операнда.
Множество двоичных чисел по mod 2**N (где N равно размеру_операндов в случае, если Rn - регистр данных, и
N=32 в случае, если Rn - регистр адреса) рассматривается как кольцо (положительное направление на котором задается инкрементацией на единицу), а допустимый диапазон - как дуга кольца, начинающаяся в Нижней_границе, и заканчивающаяся в Верхней. Так, к примеру, при Нижней_
границе=2 и Верхней_границе=0 число -1 принадлежит допустимому диапазону, а число 1 - нет. Это обстоятельство позволяет использовать команду CHK2 для проверки попадания в допустимый диапазон (понимаемый в обычном смысле, как отрезок числовой оси) и для чисел со знаком, и для чисел без знака. Для сравнения с учетом знака необходимо лишь, чтобы нижняя граница была арифметически меньше верхней; для сравнения без учета знака необходимо лишь, чтобы нижняя граница была логически меньше верхней.
Размер операндов (регистра и границ) - байт, слово и длинное слово. Если проверяется регистр данных и размер операндов определен как байт или слово, в сравнении участвует лишь соответствующая младшая часть регистра
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.