Cтраница 2
Основной задачей интерпретатора задания на обработку является подготовка данных для программных модулей и организация их исполнения в соответствии с заданием на обработку. При работе интерпретатора используется программа MODUL, которая содержит имена и характеристики вызывающих последовательностей для всех программных модулей, осуществляющих обработку данных, а также библиотека системных управляющих модулей. [16]
Передавать массивы или строки следует целиком, а не поэлементно. Это связано с тем, что каждый элемент списка ввода-вывода порождает свою собственную вызывающую последовательность машинных команд. Неэффективными конструкциями являются и циклические списки. [17]
Последовательно просматривая элементы таблиц ТМ, TV и TN, программа интерпретатора исполняется до тех пор, пока не исчерпаются все элементы таблиц. После этого происходит возврат в программу обработки информации на команду, следующую за вызывающей последовательностью для интерпретатора. [18]
Например, пусть пользователь хочет определить группу макроопределений для обращений к подпрограммам с помощью некоторой стандартизованной вызывающей последовательности. Приведенный ниже пример определяет макрокоманду DEFINE, которая при указании в качестве ее операнда имени подпрограммы определяет макро с именем этой подпрограммы. Отдельные генерирумые макроопределения имеют имена ( полученные с помощью параметра & SUB) связанных с ними подпрограмм. [19]
Если требуется вызов процедур, записанных на другом языке, нежели вызывающая программа, то большое значение приобретает унификация вызывающих последовательностей. [20]
Ниже представлено подробное описание механизма вызовов символов. Один символ может иметь много образов. Если бы в вызывающей последовательности, генерирующей образ символа, содержался фактический адрес блока команд символа, то при каждом изменении местоположения этого блока необходимо было бы модифицировать все вызывающие последовательности, относя-щиеся к данному символу. После того как указатель некоторого символа помещен в таблицу символов, его положение в таблице не меняется, изменяется лишь значение указателя. [21]
Ниже представлено подробное описание механизма вызовов символов. Один символ может иметь много образов. Если бы в вызывающей последовательности, генерирующей образ символа, содержался фактический адрес блока команд символа, то при каждом изменении местоположения этого блока необходимо было бы модифицировать все вызывающие последовательности, относящиеся к данному символу. После того как указатель некоторого символа помещен в таблицу символов, его положение в таблице не меняется, изменяется лишь значение указателя. [22]
Возможно ли при использовании этого языка программирования обеспечить доступ по физическим адресам памяти и к устройствам. В зависимости от используемого окружения ( операционного) организация связи разноязыковых программных единиц может обеспечиваться либо с помощью трансляторов с различных языков программирования, либо с помощью компоновщика. В любом случае возникают проблемы, связанные с обеспечением необходимой вызывающей последовательности, со способами передачи параметров в подпрограммы и. [23]
Первый из них реализует рассмотренный в главе III алгоритмический модуль фильтрации. Описание содержит наименование, программное имя и код модуля, назначение, описание данных и способа связи с основной программой ( вызывающую последовательность), основные технические характеристики, а также листинг ( распечатку текста на исходном языке) модуля. [24]
Первые два слова блока символа служат для пропуска блока во время просмотра списка команд дисплейного процессора в ходе регенерации изображения. Это позволяет перемежать блоки символов с блоками сегментов, что исключает необходимость хранения отдельного списка команд для символов. Слова блока символа ( с 3-го по 5 - е) содержат команду нет операции, поскольку место на экране и статус символа указываются в вызывающей последовательности, определяющей некоторый образ символа. Последнее слово блока символа содержит команду ВОЗВРАТ, описанную ниже. Подблоки, соответствующие элементам и образам символов, начинаются с четырехсловного заголовка. Первые два слова заголовка специфицируют желаемые координаты начала элемента-образа. Эти координаты являются относительными по отношению к абсолютным кординатам, указанным в заголовке блока сегмента. В самом конце подблока размещаются две команды, возвращающие луч в начало сегмента, так что координаты следующего элемента-образа опять будут относительными по отношению к началу сегмента. Третье слово заголовка элемента определяет атрибуты примитивов элемента для тех компонент вектора атрибутов IAV, которые отличаются от атрибутов сегмента, предполагаемых по умолчанию. [25]
Ниже представлено подробное описание механизма вызовов символов. Один символ может иметь много образов. Если бы в вызывающей последовательности, генерирующей образ символа, содержался фактический адрес блока команд символа, то при каждом изменении местоположения этого блока необходимо было бы модифицировать все вызывающие последовательности, относя-щиеся к данному символу. После того как указатель некоторого символа помещен в таблицу символов, его положение в таблице не меняется, изменяется лишь значение указателя. [26]
Ниже представлено подробное описание механизма вызовов символов. Один символ может иметь много образов. Если бы в вызывающей последовательности, генерирующей образ символа, содержался фактический адрес блока команд символа, то при каждом изменении местоположения этого блока необходимо было бы модифицировать все вызывающие последовательности, относящиеся к данному символу. После того как указатель некоторого символа помещен в таблицу символов, его положение в таблице не меняется, изменяется лишь значение указателя. [27]
Вызывающая последовательность, создающая на экране образ символа, состоит из двух слов. Программа, активируемая прерыванием, помещает адрес возврата на вершину стека, извлекает из таблицы символов указатель на строку корреляционной таблицы ( при этом используется адрес из второго слова вызывающей последовательности) и в конечном счете определяет адрес блока команд дисплейного процессора, описывающих нужный символ. Этот адрес заносится в счетчик команд дисплейного процессора, и начинается выполнение команд из блока символа. [28]
Вызывающая последовательность, создающая на экране образ символа, состоит из двух слов. Первое слово - команда, генерирующая прерывание, второе - адрес строки таблицы символов, соответствующей блоку команд требуемого символа. Программа, активируемая прерыванием, помещает адрес возврата на вершину стека, извлекает из таблицы символов указатель на строку корреляционной таблицы ( при этом используется адрес из второго слова вызывающей последовательности) и в конечном счете определяет адрес блока команд дисплейного процессора, описывающих нужный символ. Этот адрес заносится в счетчик команд дисплейного процессора, и начинается выполнение команд из блока символа. [29]
Реализация языка программирования Паскаль для ЭВМ семейства CDC обеспечивает возможность обращения к подпрограммам, написанным на языке Фортран. Такая, написанная на языке Фортран подпрограмма должна быть описана в программе на языке Паскаль как процедура, тело которой заменено на служебное слово Fortran. Очевидно, что аналогично этому из программы, написанной на языке Паскаль, можно обращаться к подпрограммам, написанным и на других языках программирования, при условии, что в последних обеспечивается выполнение соглашения о связях и вызывающей последовательности в точности таких же, которые существуют для языка Фортран. В том числе из программ, написанных на языке Паскаль, возможно обращение к подпрограммам, написанным на языке ассемблера. [30]