Реализация
Описанные ранее принципы организации многопроходного компилятора были применены при реализации следующих конкретных систем: 1) кросс-компилятор с ПЛ/1 для ВК ЭВМ на инструментальной ЭВМ БЭСМ-6; 2) прямой компилятор с Фортрана для ВК ЭВМ; 3) имитационный комплекс специализированного микропроцессора на инструментальной ЭВМ БЭСМ-6.
Такую же схему предполагается использовать при реализации компилятора с Паскаля для ВК ЭВМ.
(1). Кросс-компилятор ПЛ/1. Компилятор входит в состав программного обеспечения ВК ЭВМ. ПЛ/1 — распространенный язык программирования, предоставляющий пользователю достаточно широкие возможности. Компилятор работает на БЭСМ-6 под управлением мониторной системы «Дубна» и операционной системы ДИСПАК. Программные модули написаны на автокоде МАДЛЕН. Объем библиотеки перемещаемых модулей — 100К слов.
Во время генерации компилятора создается статическая библиотека разделов (80К слов), структура которой описывается по правилам мониторной системы «Дубна». Уровни фаз по справочнику должны соответствовать уровням разделов библиотеки. Раздел может содержать несколько фаз. Соответствие имен фаз и разделов задается справочником фаз компилятора и должно быть согласовано с описанием библиотеки статических разделов.
ОЗУ БЭСМ-6 (32 листа по 1К слов) распределяется следующим образом: 2 листа — монитор, 4 листа — управляющий модуль, 0,75 листа — рабочая память управляющего модуля, 1,25 — рабочая память функциональных модулей, 16 листов — «окно» виртуальной оперативной памяти, 8 листов — «окно» оверлейной загрузки функциональных модулей. При генерации компилятора размер «окна» оперативной памяти можно уменьшить до 8 листов и укрупнить соответствующим образом разделы статической библиотеки. Физический размер страницы виртуальной памяти совпадает с размером листа ОЗУ и квантом обмена с внешней памятью в ОС ДИСПАК. Логический размер страницы является параметром компилятора. Уменьшение размера страницы позволяет имитировать работу виртуальной памяти компилятора в условиях большого входного текста, используя небольшие реальные входные тексты.
В режиме эксплуатации откачки страниц текста и словаря возникают для программ, содержащих 400—500 строк текста и/или 200—300 идентификаторов. Предельные характеристики программы—10 тысяч строк и 2—3 тысячи идентификаторов. Скорость трансляции — примерно 20 строк/сек или 10 тыс. строк/10 минут.
Длина словарной ссылки—16 разрядов, объем словаря— до 64 страниц. Длина текстовой ссылки — 24 разряда, объем текста — до 256 страниц. Диагностические сообщения, как и распечатка исходной программы, содержат номер оператора, при обработке которого было выдано сообщение.
Базовый уровень содержит процедуры работы со входным файлом и файлом печати. Атрибуты этих файлов являются параметрами запуска компилятора. Таким образом, обеспечивается независимость функциональных модулей от операционной, среды компилятора.
Отладочный режим работы компилятора понимается несколько шире, чем описано в (1). Например, в отладочном режиме при печати таблицы идентификаторов в нее добавляется значение словарной ссылки, а при печати сообщений к номеру сообщения добавляется идентификатор фазы, выдавшей сообщение.
Метки: Базовый уровень, ЦП, ЭВМ, Реализация