Процессоры. Система команд ЭВМ. Устройства управления. Организация внутрипроцессорных систем ввода-вывода информации, страница 5

С созданием фирмой Intel поколений 80386, 80486 и Pentium-процессоров форматы еще более головоломно усложнились:

Рис. 3.1.1.12. Общий формат команды.

Детальный комментарий здесь затруднителен, т.к. требует подробного рассмотрения организации памяти конкретного процессора и структуры самого процессора. Ограничимся отдельными замечаниями.

 При выполнении отдельных команд разрядность операндов может меняться соответствующим префиксом размера операнда. В 32-битном режиме размеры операнда по умолчанию равны 8 и 32 бита. Если предполагается использование в команде 16-разрядных операндов, то в этом случае необходимо использовать префикс размера операнда.

Префикс размера операнда определяет размер внутрисегментного смещения. В 32-битном режиме смещения вычисляются как 32-разрядные адреса. Если в команде должен быть использован 16-разрядный адрес, то необходимо использовать префикс размера адреса.

Постбайт адресации md-reg-r/m используется для задания адресов операндов, один из которых обязательно должен находиться в регистре блока РОН, а второй может размещаться либо в регистре, либо в памяти. Кодировка полей md и r/m определяет способ вычисления адреса операнда в памяти. Для реализации некоторых способов адресации кроме постбайта в адресации используется дополнительный байт адресации SIB.

<118>

3.1.2. Список команд.

Список команд – это, по сути дела, список операций, которые способен выполнять компьютер. В среднем их количество составляет 70-80 команд, но бывает и больше.

У персональных и микро ЭВМ уже устоялось 64-128 (RISC – 32). (Заметим, что если разрядность КОП равна 8, то всего может быть построено 28=256 двоичных кодов, каждый из которых может быть использован для кодирования определенной операции). Казалось бы, чем больше, тем лучше. СуперМини ЭВМ VAX 11/780 имела, например, 303 команды. Кажется это абсолютный рекорд.

Но это верно до определенных границ, т.к. когда-то наступает «насыщение» (любая новая команда мало прибавляет к функциональным возможностям и лишь усложняет использование каждой отдельной команды). Экспериментально установлено, что программист ограничен в числе применяемых команд (операторов) и их типов.

Среди списка команд можно выделить следующие группы операций:

1)  арифметические (сложения разных видов, инкрементация, декрементация, умножение и т.п.);

2)  логические (обычно поразрядные!); сюда же обычно относят сдвиги;

3)  операции пересылок данных, кодов (между процессором, СОЗУ и ОЗУ, между ячейками ОЗУ и др.);

4)  передачи управления (условные и безусловные переходы, вход и выход из подпрограмм и др.);

5)  операции с внешними устройствами

6)  специальные команды (Останов, Пустая команда и др.);

Помимо такой (основной!) классификации иногда выделяют классы:

-  операции над стеками;

-  операции арифметики с двойной точностью;

-  операции арифметико-логические (например, сдвиг и сложение сразу);

-  операции с двоично-десятичными кодами и др.

<119>

3.1.3. Способы адресации.

Обращаю внимание, что рассматривается применение только «адресной» памяти. О способах адресации в безадресной памяти следует говорить особо.

Размерность адреса, как известно, определяет максимальную область памяти, доступную для процессора. Например, 16-разрядный адрес означает, что может использоваться 216=64К слов (байт).

Разработчики PDP-11 когда-то писали:

«…Самая большая и наиболее распространенная ошибка, которая может быть совершена при конструировании ЭВМ, состоит в том, что не обеспечивается достаточное количество адресных разрядов для обращения к памяти и управления. Совершенно очевидно, что через каждые два-три года требуется увеличивать адрес на один разряд, так как цены на запоминающие устройства снижаются ежегодно на 30%, а пользователи хотят приобретать более совершенные модели вычислительных систем по постоянной цене».