с динамической загрузкой, при этом
Динамическая компоновка может комбинироваться с динамической загрузкой, при этом не только ссылки не разрешаются, но даже модуль не загружается, пока не понадобится одна из экспортируемых им процедур. Конечно, динамическая компоновка или загрузка приводит к дополнительным издержкам во время выполнения, но это мощный метод адаптации систем к изменяющимся требованиям без перекомпоновки.
3.5. Загрузчик
Как подразумевает название, загрузчик загружает программу в память и инициализирует ее выполнение. На старых компьютерах загрузчик был не-тривиален, так как должен был решать проблему перемещаемости программ. Такая команда, как load 140, содержала абсолютный адрес памяти, и его приходилось настраивать в зависимости от конкретных адресов, в которые загружалась программа. В современных компьютерах адреса команд и данных задаются относительно значений в регистрах. Для каждой области памяти с программой или данными выделяется регистр, указывающий на начало этой области, поэтому все, что должен сделать загрузчик теперь, — это скопировать программу в память и инициализировать несколько регистров. Команда load 140 теперь означает «загрузить значение, находящееся по адресу, полученному прибавлением 140 к содержимому регистра, который указывает на область данных».
3.6. Отладчик
Отладчики поддерживают три функции.
Трассировка. Пошаговое выполнение программы, позволяющее программисту точно отслеживать команды в порядке их выполнения.
Контрольные точки. Средство, предназначенное для того, чтобы заставить программу выполняться до конкретной строки в программе. Специальный вид контрольной точки — точка наблюдения — вызывает выполнение программы, пока не произойдет обращение к определенной ячейке памяти.
Проверка/изменение данных. Возможность посмотреть и изменить значение любой переменной в любой точке вычисления.