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

Написание программы

Написание программыПри написании программы в виде отдельных исходных модулей программист может осуществлять связь между разными модулями с помощью общей области.

Общая область представляет собой область памяти, к которой могут обращаться многие независимые модули, впоследствии соединенные и загруженные для выполнения как одна программа. Если фиктивная область описывает область памяти, которая обязательно где-то зарезервирована в программе, то для общей области место в памяти ни одним из отдельно транслируемых модулей программы не определяется. В этих модулях может только определяться наличие общей области и описываться ее структура, а местоположение в основной памяти определяется при редактировании.

В исходном модуле могут быть определены несколько общих областей. Если в исходном модуле записаны несколько операторов СОМ с одинаковым именем,, то первый из них определяет начало общей области с данным именем, а остальные — ее продолжение. Неименованный оператор СОМ указывает начало или продолжение неименованной общей области. Имя из поля названия оператора СОМ является переместимым, с характеристикой длины, равной 1. Операторы, следующие за оператором СОМ, будут отнесены к операторам, описывающим общую область. Когда редактор связей или загрузчик создает выполняемую программу, он резервирует в ней области памяти, соответствующие общим областям, которые предшествуют всей программе. Если общая область с одним и тем же именем указывается в нескольких исходных модулях, то длина отводимой для нее области памяти равна длине самой большой указанной общей области. Общая область всегда начинается на границе двойного слова. Начальный адрес выполняемой программы определяется редактором с учетом наличия и длин общих областей.

Общая область в каждом исходном модуле может быть разбита на поля с помощью любых операторов языка ассемблера. Полям могут присваиваться имена. Имена полей используются в модуле для обращения к общей области. Если имена из общей области используются в машинных командах, то в модуле должен быть определен регистр базы, доступный для этих имен. Базовый адрес для общей области может задаваться именем самого оператора СОМ или именем некоторого оператора из общей области, если оператор СОМ не имеет имени. При трансляции назначение адресов элементам общей области начинается с нуля.

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

Copyright © 2022. All Rights Reserved.