ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 14.01.2021

Просмотров: 141

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

В некоторых бинарных операциях часто используются опре­деленные операнды, поэтому в архитектуры команд включаются унарные операции для их быстрого выполнения. Например, в начале вычислений часто выполняется запись нуля в память или регистр. Поэтому для повы­шения производительности часто имеется операция CLR с одним очищаемым операндом. Подобным образом вводят команды INC и DEC (увеличение и уменьшение на 1). Еще при­мер - операция NEG (изменение знака).

Унарные и бинарные операции часто объединяют в группы по функциям, а не по числу операндов. В одну группу входят арифметические операции, в другую - логические операции и операции сдвига, поскольку эти две категории часто используются вместе для извлечения данных.


5.1.7.4. Сравнения и условные переходы


Эти команды обеспечивают возможности кодирования разветвляющихся алгоритмов. Они проверяют какое-либо условие и совершают переход по определенному адресу памяти, если условие выполнено. Иногда специальный бит в команде указывает, нужно ли осуществлять переход в случае выполнения условия или наоборот в случае невыполнения. Часто целевой адрес является не абсолют­ным, а относительным (связан с текущей командой).

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

Часто такой операцией является сравнение. Она важна, например, при сортиров­ке. В 2-х адресных системах команда сравнения записывает результат в один или несколько битов условия. Следующая команда может проверить биты условия и совершить соответствующий переход.


5.1.7.5. Команды вызова процедур


Процедура - это группа команд, которая выполняет определенную задачу и кото­рую можно вызывать из различных мест программы. Вместо термина процедура часто используется термин подпрограмма, особенно когда речь идет о программах на языке ассемблера.

Когда процедура заканчивает работу, она должна вернуть управление в точку вызова. Для этого должен где-то сохраняться адрес возврата. Он может помещаться в одном из трех мест: в памяти, регистре или стеке. Его нельзя помещать в одну фиксирован­ную ячейку (память или регистр), т.к. при цепочке вызовов предыдущие адреса возврата будут утеряны. Одно из решений - сохранять адрес возврата внутри процедуры. По завершении работы процедура выбирает адрес и осуществляет переход. Это решение оказывается неудачным, если процедура вызывает сама себя (рекурсия). Самое удачное и наиболее часто применяемое решение - помещать адрес возврата в стек. По завершении процедура выталкивает адрес возврата из стека. При такой форме вызова рекурсия не порождает проблем.



5.1.7.6. Управление циклом


Цикл является одной из наиболее важных управляющих структур в алгоритмах. Поэтому часто архитектура команд предоставляет специальные средства для организации циклов. Схема цикла обычно содержит счетчик (часто – регистр), который изменяется на какую-либо константу каждый раз при выполнении тела цикла (в начале или в конце). При изменении значение счетчика проверяется. Если выполнено некоторое условие (например, равенство нулю), цикл завершается.

Для поддержки циклов архитектура может предоставить, например, команду “вычитание единицы и переход”.



Смотрите также файлы