Подпрограммы в БЭВМ. Цикл исполнения команд перехода и возврата из подпрограммы. Стек, передача параметров. Позиционно-независимый код. Загрузчик и библиотеки.
Подпрограмма
Подпрограмма — это выделенная часть программы, выполняющая некоторую законченную последовательность действий и вызываемая из разных мест программы. Использование подпрограмм уменьшает дублирование кода, экономит память и упрощает разработку программ.
В БЭВМ для работы с подпрограммами используются команды CALL и RET.
CALL выполняет переход к подпрограмме и сохраняет адрес возврата.
RET завершает выполнение подпрограммы и возвращает управление в точку вызова.
Цикл исполнения CALL

Цикл исполнения RET

Параметры в подпрограмму могут передаваться несколькими способами:
- через аккумулятор;
- через адресуемые ячейки памяти;
- через стек.
Стек
Стек — структура данных типа LIFO (Last In — First Out).

В БЭВМ стек организуется программно в области оперативной памяти. Для работы со стеком используется регистр SP (Stack Pointer), содержащий адрес вершины стека. Стек находится по адресу 7FF и при при помещении данных в стек указатель уменьшается, при извлечении — увеличивается.
Основные операции:

Позиционно-независимый код (PIC)
PIC (Position Independent Code) — программный код, который может быть загружен в любую область памяти без изменения содержащихся в нём адресов.
Для этого используются относительные адреса и вычисление адресов во время выполнения программы. PIC широко применяется в разделяемых библиотеках и современных операционных системах.
Загрузчик и библиотеки
Перед выполнением программы операционная система запускает загрузчик. Загрузчик — компонента ОС, который загружает программу в память, инициализирует необходимые регистры, загружает требуемые библиотеки и связывает адреса вызовов функций с их реальными адресами.
Загрузчик выполняет:
- размещение программы в памяти;
- настройку начальных значений регистров;
- связывание программы с библиотеками;
- загрузку динамических библиотек;
- настройку адресов вызовов библиотечных функций.
Библиотека — это набор готовых функций и подпрограмм, которые могут использоваться различными программами.
Различают:
- статические библиотеки — код функций включается в программу на этапе компиляции;
- динамические библиотеки — загружаются и связываются во время запуска программы.
Использование библиотек позволяет избежать дублирования кода, уменьшить размер программ и упростить разработку.