Cтраница 4
В табл. 15.5 приведены структура и содержание области сохранения вызывающего модуля. Регистр 15 загружается адресом входа в вызываемый модуль, а регистр 14 - адресом возврата из вызываемого модуля. Один из адресов предусматривается для результата, формируемого вызываемым модулем. [46]
При выполнении макрокоманды LINK, управление получает программа Передача управления программе в другом загрузочном модуле ( рис. 8.4), которая просматривает Таблицу номеров системных задач, затем - Очередь загруженных программ для определения, находится ли модуль в основной памяти. При успешном поиске строится Блок запроса, помещаемый в Очередь активных программ, управление передается в точку входа вызываемого модуля. Если соответствующий Блок запроса найден не был, происходят поиск и загрузка модуля из библиотеки в основную память и помещение Блока запроса для этого модуля в Очередь активных программ. [47]
Параметры передаются программе, вызываемой макрокомандой XCTL, через регистр 1, куда должен быть помещен адрес списка адресов параметров. Сам список должен находиться в той части основной памяти, которая расположена вне загрузочного модуля, выдавшего XCTL, так как он может быть исключен из памяти до того, как вызываемый модуль будет использовать параметры. [48]
Благодаря модульной структуре программа задачи может быть легко изменена. При конструировании задачи из модулей формируется иерархия модулей. Вызываемый модуль может стать вызывающим по отношению к какому-либо другому модулю. Модуль, получивший управление от вызывающего модуля, может вернуть управление в вызывающий модуль. Вызываемый модуль может находиться в памяти или отсутствовать. Тогда необходимо осуществить загрузку требуемого модуля в свободный участок памяти или на место уже отработавшего модуля. [49]