Cтраница 3
Оператор call trace, активизирует программу трассировки: инициирует передачу управления субмонитору, который в свою очередь передает управление программе трассировки. Субмонитор сообщает программе трассировки содержимое общих регистров во время вызова той программы и адрес в XPL-npo - грамме. [31]
При вызове субмонитор сначала определяет, специфицирует ли индекс действительный выходной файл; если нет, то выполнение программы заканчивается. Затем субмонитор определяет, открыт ли файл, и если файл закрыт го открывает его, после чего выполняется макрокоманда PUT p режиме указания. Операционная система возвращает адрес следующего выходного буфера, субмонитор перемещает выводимую запись в буфер, усекая или наращивая ее, как его было списано выше, и возвращает управление программе. [32]
Процедуры call clock - trap ( пеъ пе2); call interrupt - trap ( пеъ ne-i); call monitor ( nex, net); представляют служебные запросы субмонитору и вызывают зависящие от субмонитора реакции. Для текущей версии субмонитора они не являются операциями. Автоматически вызываемая процедура переупаковки свободного участка памяти для строковых данных, когда его формирование уж. [33]
В текущей версии субмонитора не используется. [34]
Если какой-либо из этих файлов не может быть открыт, выполнение заканчивается с указанием ошибки ( си. Когда файлы открыты, субмонитор выполняет макрокоманду GETMAIN в условной форме для получения от системы места в основной памяти. В такой форме макрокоманды указываются минимальный и максимальный объемы памяти. Операционная система выделяет субмонитору объем памяти от минимального и, если допустить, что минимум имеется, до наибольшего возможного, вплоть до указанного максимума. Такой метод выделения памяти позволяет получить для программы наибольший возможный объем памяти. [35]
Чтобы обеспечить адресацию и сделать трассировку возможной, было принято соглашение, что один регистр ( R15) всегда будет содержать адрес точки вхождения в субмонитор. Таким образом, к субмонитору всегда можно обратиться, используя общие регистры трассируемой программы, команда исполнения всегда имеет возможность адресации. Применение команды исполнения для выполнения большинства команд намного упрощает программу трассировки. [36]
Объектные программы XPL не рассчитаны на непосредственную связь с операционной системой при выдаче различных запросов. Роль устройства сопряжения выполняет программа субмонитора, так что ХСОМ может генерировать простые вызовы к субмонитору на языке XPL. Хотя система XPL была первоначально рассчитана на работу с ОС / 360, она может работать с любой операционной системой ( ВМ / 360 причем для этого необходимо внести изменения только в субмонитор Изменения в операционной системе повлекут за собой изменения лишь в субмониторе ( с использованием ассемблера и не потребуют перекомпиляции существующих программ. [37]
Одной из особенностей способа распределения регистров в системе ХРЬ является то, что R 15 всегда содержит адрес точки вхождения в субмонитор. Оправдывают ли требования XPL-программы к субмонитору выделение общего регистра под адрес монитора. Изменения в схеме регистров влекут за собой изменения в субмониторе, в программе трассировки ( которая использует субмонитор для печатаемого вывода и для исполнительных команд и в ХСОМ. [38]
Хотя имя и функция программы не изменяются во время выполнен ния ряда трансляций, форма выражения меняется. Допуская теперь, что можно запустить субмонитор для загрузки выхода из ХСОМ, мы все еще должны описать, как же был впервые получен ХСОМ. В действительности это было осуществлено в виде записи ХСОМ на другом языке и на другой машине. [39]
Если ХСОМ написан на XPL и предназначен для компиляции программ XPL, то как появился первый функциональный ХСОМ. И если для загрузки программ необходим субмонитор ХСОМ, то как он сам был загружен. [40]
Другое подобное соответствие между внутренними именами субмонитора и именами, употребляемыми в программе, устанавливается во время ассемблирования субмонитора. [41]
Действия, выполняемые программой при представлении запросов к субмонитору, очень просты В R1 загружается код обслуживания - небольшое целое число, используемое для выбора задачи, которую. Ассоциации между кодами обслуживания и задачами устанавливаются при ассемблировании субмонитора. Кроме того, эти ассоциации известны подпрограммам порождения кода в ХСОМ Список действительных кодов обслуживания приведен в габл. Во время запроса субмонитору может также передаваться до двух аргументов. Подробнее передача аргументов субмонитору рассматривается ниже. [42]
Объектные программы XPL не рассчитаны на непосредственную связь с операционной системой при выдаче различных запросов. Роль устройства сопряжения выполняет программа субмонитора, так что ХСОМ может генерировать простые вызовы к субмонитору на языке XPL. Хотя система XPL была первоначально рассчитана на работу с ОС / 360, она может работать с любой операционной системой ( ВМ / 360 причем для этого необходимо внести изменения только в субмонитор Изменения в операционной системе повлекут за собой изменения лишь в субмониторе ( с использованием ассемблера и не потребуют перекомпиляции существующих программ. [43]
Другое подобное соответствие между внутренними именами субмонитора и именами, употребляемыми в программе, устанавливается во время ассемблирования субмонитора. [44]
Ясно, что такая возможность сократила бы в целом перегрузку при начальном исполнении Осн, ная трудность ее реализации заключается в том, чтобы разъединить абсолютные адреса в описателях и возвратах управления процедурой и вновь объединить их при возобновлении пуска программы Необходимо также поработать над субмонитором ( особенно в отношении частично созданных файлов) Тщательно проанализируйте проблемы, которые могли бы tipii этом возникнуть, и предложите метод их решения. [45]