Cтраница 2
Транслятор с - автокода выполняет перевод программы, представленной на внешнем системном языке, в программу для конкретной ЭВМ с выдачей на печать таблицы распределения памяти и текста транслированной программы, а также перфорацию программы и карты ее ввода. [16]
Если при счете по готовой программе произойдет за цикливание или автоматическая остановка, то необходимо по адресам команд и адресам операндов в командах при помощи таблицы распределения памяти установить их соответствие операторам и величинам АЛГОЛ-программы. [17]
Пги пяопознавании нетепминальных символов, рассмотренных в табл. 6 - 4 и 6 - 5, генерирующая программа в зависимости от типа языка производит заполнение и анализ таблиц распределения памяти, а вместо идентификаторов и переменных подставляет относительный или абсолютный адрес размещения в памяти и условные коды, необходимые для работы генерирующих программ второго прохода. [18]
Каждому из описанных этапов соответствует определенная часть ( фаза) транслятора, выдающего результаты работы каждого из этапов, например отпечатанный текст исходной и объектной программ, список идентификаторов и их описателей, информационные сообщения об ошибках, таблица распределения памяти, запись исходной и оттранслированной программ на внешние носители. [19]
Размещение информации на листинге представлено на рис. 7.1. Цифра-ми обозначено: 1 - заглавная строка листинга; 2 - текст исходной программы; 3 - таблица символов; 4 - дополнительный список номеров ошибок; 5 - список диагностических сообщений; 6 - таблица распределения памяти между внутренними подпрограммами рабочей программы; 7 - длина рабочей программы в шестнадцатеричной системе счисления без учета модулей ввода-вывода и подпрограмм пользователя, число пронумерованных транслятором строк программы и набор опций, определенных для шага трансляции; 8 - сообщение об окончании трансляции. [20]
В режиме LIST транслятор с Базисного ФОРТРАНа печатает - также таблицы распределения памяти как при успешной компиляции, так и в тех случаях, когда компиляция производится при наличии ошибок. Таблица распределения памяти при успешной компиляции состоит из пар символ, адрес, относящихся к простым переменным, за которыми следуют такие же пары для массивов. Далее в таблице помещается перечень вызываемых подпрограмм и таблица пар метка, адрес. В конце таблицы указываются объем общей области, объем и адрес загрузки программы. При компиляции с ошибками таблица распределения памяти открывается перечнем неопознанных меток, далее следуют пары символ, адрес для имен, которые удалось разместить в памяти. Кончается таблица сообщением о прекращении трансляции. [21]
Составляющая программа осуществляет компоновку рабочей программы до начала ее выполнения. При этом ССП имеет таблицу распределения памяти и, пользуясь ею, может выполнять формирование как внутренних, так и внешних адресов. [22]
Сообщения трансляторов, особенно ФОРТРАНа, а также таблицы распределения памяти и символических имен позволяют хотя и не всегда легким, но надежным способом отыскать ошибки нарушения синтаксиса языка и количественных ограничений транслятора. [23]
Как и в PC-XT, эти диски - несъемные. Увеличение емкости памяти достигается с помощью команды FORMAT: создаваемая таблица распределения памяти удвоена или, точнее, учетверена, поскольку блок распределения теперь состоит из группы по 4 сектора ( 2 кбайт), а не из 8 секторов ( 4 кбайт), как это было в дисках на 10 Мбайт. [24]
Готовую программу транслятор может либо записать на ленту и выдать перфокарту вызова, либо выдать на перфокарты. Кроме этого, транслятор выдает текст программы на языке АЛГОЛ и таблицу распределения памяти, помогающую анализировать структуру программы. [25]
Таким образом, идея состоит в том, чтобы в программе зарезервировать слово и пометить его меткой MEM. Все это выполняет программа загрузчик, которая, кроме того, поместит MEM в таблицу распределения памяти в виде номера соответствующей ячейки памяти. [26]
На рис. 8.3, а мы видим память совместного использования, реализованную в аппаратном обеспечении в виде реального мультипроцессора. В данной разработке имеется одна копия операционной системы с одним набором таблиц, в частности таблицей распределения памяти. Если процессу требуется больше памяти, он прерывает работу операционной системы, которая после этого начинает искать в таблице свободную страницу и отображает эту страницу в адресное пространство вызывающей программы. Что касается операционной системы, имеется единая память, и операционная система следит, какая страница в программном обеспечении принадлежит тому или иному процессу. Существует множество способов реализации совместной памяти в аппаратном обеспечении. [27]
Все программы включают по меньшей мере два сегмента: сегмент процедуры и управляющий сегмент. Последний используется для хранения текущего содержимого регистров, диспетчерской информации, данных, необходимых для организации связи, и таблицы распределения памяти. Сегмент процедуры содержит машинную программу, определяющую ее реализацию. [28]
После этого проверяется правильность ввода массива путем подсчета суммы введенных кодов и сравнением ее с контрольной суммой массива. Затем просматривается информация о массиве и в ней заменяются номера N - внешних массивов на их начальные адреса kf, которые находятся по значениям N / в таблице распределения памяти. [29]
Однако этот номер может относится к библиотечной подпрограмме, поэтому ССП обращается к ПТХ библиотеки. Если необходимый номер найден в ПТХ, то ССП берет из ПТХ о нем сведения и дополняет ими исходные данные, а также заносит номер массива в таблицу распределения памяти и вычисляет его начальный адрес. Если нужного номера массива нет и в ПТХ, то это свидетельствует об ошибке в записи номера внешнего массива. [30]