Подпрограммы в БЭВМ. Цикл исполнения команд перехода и возврата из подпрограммы. Стек, передача параметров. Позиционно-независимый код. Загрузчик и библиотеки.

Подпрограмма

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

В БЭВМ для работы с подпрограммами используются команды CALL и RET.

CALL выполняет переход к подпрограмме и сохраняет адрес возврата.
RET завершает выполнение подпрограммы и возвращает управление в точку вызова.

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

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

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

  • через аккумулятор;
  • через адресуемые ячейки памяти;
  • через стек.

Стек

Стек — структура данных типа LIFO (Last In — First Out).

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

Основные операции:


Позиционно-независимый код (PIC)

PIC (Position Independent Code) — программный код, который может быть загружен в любую область памяти без изменения содержащихся в нём адресов.

Для этого используются относительные адреса и вычисление адресов во время выполнения программы. PIC широко применяется в разделяемых библиотеках и современных операционных системах.


Загрузчик и библиотеки

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

Загрузчик выполняет:

  • размещение программы в памяти;
  • настройку начальных значений регистров;
  • связывание программы с библиотеками;
  • загрузку динамических библиотек;
  • настройку адресов вызовов библиотечных функций.

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

Различают:

  • статические библиотеки — код функций включается в программу на этапе компиляции;
  • динамические библиотеки — загружаются и связываются во время запуска программы.

Использование библиотек позволяет избежать дублирования кода, уменьшить размер программ и упростить разработку.