Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по АК.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
752.64 Кб
Скачать

Команды обращения к процедурам

Это команды изменяющие содержимое счетчика команд, для вызова некоторой процедуры. Суда же относятся команды возврата из процедур. Суда же относятся команды возврата из процедур.

Операция по возврату с прерыванием

Критерий выбора формата команд:

  1. Минимально возможная длина, т.е. команды должны быть короткими.

  2. Соответствие длины команды разрядности процессора, шины, памяти, а также соотношение скорости их работы.

  3. Формат команды должен быть достаточным для кодирования в нем всего необходимого перечня команд.

  4. Длина любой команды должна быть ровна 2n .

Расширенные коды операций позволяют сократить длину машинной команды, за счет использования части операнда или части кода адресации под кодирование команды.

Существуют и другие способы сокращения длины команды:

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

Чтобы решить проблему, вводится дополнительный регистр называемый регистром базы. Туда вносится некоторый адрес области данных.

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

2. Использование индексных регистров. При работе с массивами эти регистры содержат косвенный адрес данных в массиве и инкрементируются автоматически при обращении к ним.

Процедуры

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

Существует 3 способа хранения адреса возврата:

  1. Хранение адреса возврата в фиксированной ячейке памяти. Это может быть регистр или оперативная память.

Недостатки: допустим только 1 уровень вложенности процедур, если процедура вызывает другую процедуру, адрес возврата теряется. В чистом виде данный подход не используется. Однако в процессорах (PIK) используется массив фиксированных ячеек памяти.

  1. Хранение адреса возврата в первой ячейке памяти вызвавшей процедуры.

Недостаток: допускается любое число вызовов вложенных процедур, но при этом ни одна процедура не вызывается дважды. Рекурсия не возможна. Данный подход не используется.

3. Хранение адреса возврата в вершине стека. Данный метод позволяет использовать вложенные процедуры, рекурсию, а также ценную рекурсию. Однако, количество рекурсивных вызовов процедуры ограниченна размерами стека. Размеры стека ограниченны разрядностью указателя стека.

Рекурсия – это способность процедуры вызывать саму себя.

Ценная рекурсия – это когда процедура вызывает сама себя через вложенный вызов иных процедур.

Сопроцедуры – это группа процедур, которая выполняется фрагментально и способно вызывать друг друга не с начала.

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

  1. Считать адрес возврата вызываемой процедуры с вершины стека поместить во временный регистр.

  2. Загрузить счетчик команд, вызвавший сопроцедуры в вершину стека.

  3. Поместить содержимое временного регистра в счетчик команд.