Случайное
Старые записи

Общая область

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

Для управления связями между вызывающим и вызываемым модулями используются общие регистры 0, 1, 13, 14, 15, называемые Регистрами связи. Регистры 0 и 1 предназначаются для передачи данных между модулями. Если данные передаются в вызываемый модуль в виде списка параметров, то адрес списка помещается в регистр 1. Регистр 0 может использоваться для передачи результата вызывающему модулю. Регистр 13 используется для передачи вызываемому модулю адреса области сохранения вызывающего модуля. Регистр 14 служит для передачи вызываемому модулю адреса возврата в вызывающий модуль. Регистр 15 содержит адрес входа в вызываемый модуль и используется для передачи управления вызываемому модулю.

Для установления стандартной связи в случае, когда модуль на ПЛ/1 вызывает модуль на языке ассемблера, необходимо в вызывающем модуле на ПЛ/1 при объявлении имени входа вызываемого модуля указать атрибут OPTIONS с режимами ASSEMBLER и INTER. Обращение к модулю на языке ассемблера выполняется с помощью оператора CALL. Вызываемый модуль на языке ассемблера должен программироваться с соблюдением правил, изложенных в 5.2. При этом нужно учитывать, что область сохранения должна быть равной 22 словам. В системе программирования ПЛ/1 она называется областью DSA, причем структура первых 18 слов у нее стандартная. Кроме того, для модуля на языке ассемблера необходимо выбрать способ обработки ошибок и программных прерываний. Если для этой дели выбираются средства ПЛ/1, то вызываемый модуль на языке ассемблера не должен изменять регистр 12, иначе это может привести к непредсказуемым результатам. Если в модуле на языке ассемблера будет производиться обработка ошибок и прерываний, отличная от средств ПЛ/1, нужно использовать системные макрокоманды SPIE и STAE с соответствующими операндами.

Интересные статьи

Copyright © 2022. All Rights Reserved.