Уменьшение формата команды

Существует множество методов уменьшения форматов команд ЭВМ. Среди наиболее употребительных следующие:

1. Использование программного счетчика, содержащего адрес команды. Центральный процессор увеличивает содержимое программного счетчика после каждого обращения к памяти программ и таким образом вызывает из программной памяти следующую команду с очередным, более старшим адресом.

2. Использование адресов источника и места назначения информации не явно выраженных, а неточных. Эти неявно выраженные адреса могут быть записаны в регистры или в ячейки памяти, адресуемые через регистры.

3. Использование адреса, по которому записывается результат, принадлежащего одному из исходных, т. е. когда результат записывается на место одного из операндов.

4. Ограничение адресации регистрами, или адресации по содержимому регистров, вместо использования полных адресов ячеек памяти.

С помощью перечисленных методов удается сократить формат команд ценой некоторой потери гибкости их использования. Необходимы специальные команды, с помощью которых программист может изменить неявно адресуемую информацию, предотвратить автоматическое получение следующего адреса и загрузить или заполнить содержимое неявно выраженных адресов. Такой прием оправдан, если число требуемых дополнительных специальных команд в программе мало, т. е. неявно адресуемая информация используется большую часть времени работы программы

апример, использование программного счетчикя представляет собой метод выборки последующей команды. Нет необходимости специ фицировать адрес следующей команды, если он занимает в памяти ячейку с^ адресом, на 1 большим, но при этом необходимо использовать дополнительные команды (например, ПЕРЕХОД, УСЛОВНЫЙ ПЕРЕХОД, ПРОПУСК или ОСТАНОВ — JUMP, BRANCH, SKIP или HALT)- Вопрос в том, может ли программист составлять программы так, чтобы ЭВМ большую часть времени работала последовательно. Ответ: такое написание программы не только возможно, но и желательно, так как делает программы более легкими для ввода и отладки.

Использование неявной адресации (с помощью аккумулятора или записи адреса в указатель стека или в адресный регистр) означает, что данной команде нет необходимости содержать этот адрес, но нужны специальные команды для загрузки или запоминания содержимого этих регистров. Может ли программист ограничиться небольшим числом специальных команд? Да, если программист размещает операнды в последовательных ячейках памяти, а программа извлекает операнды в их собственном порядке.

Если местом назначения информации сделать ее источник, то один адрес з команде можно опустить, но при этом прежнее содержимое источника будет уничтожаться. Может ли программист составлять программу так, чтобы реже врзникала необходимость в запоминании промежуточных результатов? Да, в большинстве случаев промежуточные результаты вычислений не нужны.

Аналогично использование только адресации регистров означает, что дополнительные команды' нужны для того, чтобы загрузить эти регистры и запомнить их содержимое. Здесь программист тоже может уменьшить число дополнительных команд в программе путем разумной организации последовательностей данных и операций и путем отказа от вывода промежуточных результатов. Использование стека также позволяет сократить формат команд, так как указатель стека автоматически изменяется при каждом обращении к стеку. Однако при этом программист должен упорядочить информацию в стеке. Отметим, что все эти методы уменьшают формат команд, но усложняют работу программиста.