автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Исследование и разработка методов реализации мобильной системы программирования языка Модула-2

кандидата физико-математических наук
Макаров, Владимир Николаевич
город
Москва
год
1992
специальность ВАК РФ
05.13.11
Автореферат по информатике, вычислительной технике и управлению на тему «Исследование и разработка методов реализации мобильной системы программирования языка Модула-2»

Автореферат диссертации по теме "Исследование и разработка методов реализации мобильной системы программирования языка Модула-2"

РОССИЙСКАЯ АКАДЕМИЯ НАУК ИНСТИТУТ ПРОБЛЕМ КИБЕРНЕТИКИ

На правах рукописи УДК 681.3.06

Макаров Владимир Николаевич

Исследование и разработка методов реализации

. мобильной система программирования языка Модула-2

:■.'''.'' 1 ! ■ , ■

Специальность 05.13.11 - "Математическое и программное обеспечение вычислительных машин, комплексов, систем и сетей",

■ Автореферат диссертации на соискание ученой степени кандидата физико-математических наук

Москва 1992

Работа выполнена в Институте Проблем Кибернетики РАН

Научный руководитель; член-корреспондент РАН

Б,П. Иванников.

Официальные опоненты: доктор Физико-математических наук

Ведущая организация: йнтигут Прикладной Иатенатики им.

[¡.В.Келдыша РАН

. Защита состоится 1993 г, в^часов

на заседании специализированного совета К.003.78.01 Института Проблей Кибернетики РАН. '

Адрес; 117312. Москва, ул. Вавилова, дои'37

Автореферат разослан г. . •

Учений секретарь специэ! К.033.7В.01

В.А. Серебряков

кандидат физико-математических наук Е.С. Кусиков

к.ф.-н.н.

г

А.а.Ишмухаиетов

Общая характеристика работы

Актуальность теин.

Современнее программирование немыслимо без ясных языков программирования, адекватно поддеруивавцих разработку программ на базе объектно-ориентированного подхода. Ядром объектно-ориентированного подхода являются понятия абстрактных данных и абстрактных типов данных. К языкам,, ориентированным на использование абстрактных данных и абстрактных типов данных, относится созданный Никласой Виртом 'Язык Иодулз-2, .практическое внедрение и использование которого но.ет существенно повысить производительность труда программиста.

В силу многочисленных причин, современное программирование немыслимо также без разработки программного обеспечения, ориентированного на работу в нескольких средах (в данном контексте под средой понимается ЗВИ и базовое программное обеспечение на ней: ОС и др.). Часто работы по * реализации такого программного обеспечения удобно выполнять в нескольких средах одновременно. Трудозатраты на реализацию переносимого программного обеспечения могут быть снижены (и довольно значительно), если в разных средах используется одна и та же система программирования. Бот почему, повышение степени мобильности систем программирования является актуальной задачей, даче несмотря на то, что реализация таких систем сопровождается увеличением стоимости их разработки в первой среде и снижением в эффективности их работы.

Цепи работы.

1. Пш.едсвание методов реализации современных универсальных языков программирования.

2. Исследование и разработка методов создания мобильных систем программирования, поаволяадих еыполнить их реализации с небольшими трудозатратами.

3. Реализация мобильней система программирования языка ' Нодула-2 и апробация методов ее реализации.

Научная новизна,

1. Создана методика реализации мобильных систем программирования, позвопякцая выполнить их реализации с

2

небольшими трудозатратами. В ней следует особенно выделить . методы быстрой трансляции на язык высокого уровня и методы реализации отладчика при трансляции на язык высокого уровня.

2. Показана приемлемость использования разработанной методики.

Практическая ценность.

1. Реализована мобильная система программирования языка Модула-2 на ЗБН "Электроника-85" в ОС VENIX, на ЭВМ семейства VAX-11 в ОС ULTRIX и на FC AT в ОС XENIX.

2. Для Ассоциации Свободного Программного Обеспечения (Free Software Foundation) из данной системы программирования

; был создан транслятор программ на языке Модула-2 в программы ] на языке Си. Транслятор бил реализован в 1!тх~подобных ОС на базе различных Си компиляторов для следующих ЭВМ и процессоров с 32-битовым словом: AMD 25000, Arm, Convex, Fx80, HF800, Intel 83386, Intel 60486, Intel 86000, Motorola 68000, Motorola 68020, Motorola 88003, HIPS, US 32003, Pyramid, Rorup С IBM PC/R7), IBM R3/6O000, SPARC, Tahoe, Tron, VAX. Транслятор тестировался для VAX, IBM PC/RT, Motorola 68020 iSUIt-3) и Motorola 88000 (DG Aviion).

3. Результаты исследования могут использоваться в работах по созданию мобильных систем программирования для других языков, например таких как VHDL или Оберон.

Апробация работы. -

Основные результаты диссертации доложены на первой . международной конференции Советской Ассоциации Пользователей ОС Unix «G) в 1990 году.

Публикации.

По теме диссертации ол>Спинован» три печатных работы.

Объем и структура работы.

Диссертация состоит из введения, трех г пав, заключения, спика литературы и шести приложений.

Содеохзние работа.

В первой главе описываются: внбор основных проектных решений для реализации системы программирования языка Нодула-2, вытекающие из них требования к реализации, а также влияние выбранных проектных решении на реализуемые расширения языка Иодула-2. ■

В начале главы раскрываются понятия независимой и раздельной компиляции, исследуются методы реализации . раздельной компиляции. Реализация раздельной компиляции предполагает, что во рремя трансляции модуля необходимо иметь информацию об описании импортируемого объекта. Выделяют два подхода к реализации раздельной компиляции, различающиеся по способу хранения и получения такой информации. Их главное ф, различие состоит в том, создает или не создает компилятор дополнительные информационные Файлы, файлы символов, в которых хранится эффективно закодированная информация сб экспортируемых объектах.

В первом подходе файлы символов не создаются, а при трансляции модуля одновременно транслируются и необходимые модули определения. Зто так называемый, метод трансляции интерфейсных единиц компиляции,

Во втором подходе, предварительно созданные по описаниям экспортируемых объектов файлы символов используются при трансляции единицы компиляции. Кроме того, файлы символов. • различают по двум параметрам: по количеству файлов символов, . используемых при трансляции одного модуля, и по. .структуре Файлов символов. Если при компиляции модуля используются файлы символов, представляющие интерфейсы только явно . . импортируемых модулей, говорят, что они вида В. Вид А . описывает противоположный случай, когда используются файлы . символов, представляющие интерфейсы как явно, так и неявно импортируемых модулей (через импорт импортируемых модулей). Говорят такие, что файл символов - вида Ь, если он фактически закодированная таблица символов компилятора, и - вида а, если

4

его структура близка к предстаглению объектов на самой языке Модула-2,

В описываемой реализации бил выбран метод трансляции интерфейсных единиц компиляции. Данный метод упроцает реализацию компилятора, т.к. значительная часть исходного кода компилятора принадлежит программам работы с файлами символов. Кроме того, поскольку никаких дополнительных файлов не генерируется, упрощается работа с компилятором языка Модулз-2, так как лроие отсиживать согласованность по версиям различных файлов программы (исходных и объектных). Единственный недостаток, к тому >:е проявляющийся только в сравнении с использованием файлов символов класса В, - это замедление скорости компиляции. Для компенсации замедления скорости компиляции приняты меры, которые описываются во второй главе.

Реализация метода трансляции интерфейсных единиц компиляции привела к мысли об использовании компилятора, точнее его анализатора, и во время сеанса отладки для получения таблиц символов, что в свою очередь упростило реализацию отладчика. При этой следует помнить, что для работы отладчика недостаточно файлов символов, поскольку отладчику нужна информация на только об интерфейсных (экспортируемых) объектах, но и о объектах, используемых только внутри одной единицы компиляции,

Входным языком системы программирования является версия языка НидУла-2, ориентированная*на многопроходную реализацию. Главный К' вопрос реализации многопроходного компилятора -вопрос о выборе внутреннею представления программы, т.е. о выборе структур данных, используемых внутри компилятора для представления программы и для передачи информации о программе от одного.прохода компилятора к другому. Часто в компиляторе особо шеняют два фазы! ф^зу анализа и фазу генерации кода. Внутренние представление компилятора, ьнотупащее как интерфейс ммду этими двумя фазами, называют промежуточным представлением,

В качестве внутреннего представления выбран граф, реашштшшГ! й вид« списшмт структуры. Дли обоснования этого выбора в первой глане исследуются различные формы внутренней и промежуточного предагафния. Прешг/цёство

В "

(такого выбора заключается в возможности единообразно 'представить как таблицу символов, так и операторы (выражения) языка. В отличие от других представлений, все необходимые связи между конструкциями исходной программы уже представлены в граФе и для их обработки не требуется создавать многочисленные структуры данных и процедуры. Кроме того, использование внутреннего представления в виде графа значительно увеличивает скорость обработки и позволяет на языке Си статически (с помощью конструкции инициализации , переменных) описать стандартную сре^у языка йодулз-2. Недостаток использования графа - большой расход памяти для его хранения, но эта проблема была реиена,- благодаря блочной1 структуре языка Подула-2 и соответствующей организации работц компилятора. К тому же, этот недостаток несущественен при использовании современных ЗВг! с большим объемом,виртуальной памяти и частично компенсируется экономней памяти на структурах даннных и процедурах, необходимых для обработки других форм внутреннего представления.

Узлы графа внутреннего представления соответствуют различным кострукциям исходной программы на языке Нодупа-2. Наличие между узлами графа дуги означает связь между соответствующим конструкциями исходной программы. В узле графа может находится семантическая информация, не представленная дугами, например номер строки текста в исходной программе, на которой начинается соответствующая конструкция. Часто удобно некоторые узлы рассматривать как Еасиангы некоторого обобщенного узлз. Наример, узеп оператора НИНЕ можно считать вариантом некоторого обобщенного узла оператора. В таком обобщенной узле хранится семантическая информация, общая для всех его вариантов, и из такого узла может исходить дуга, которая исходит из всех его вариантов, Таким образин, появляется понятие из области объектно-ориентированного программирования: понятие наследования. Как показала реализация языка Иодулз-2 для описания узлов графа удобно понятие множественного • наследования. Зто означает, чм иногда узел удобно рассматривать как вариант сразу двух и более обобщенных узлов.

Хотя язык Си явно и не поддерживает наследование

6

типов, его можно промоделиров?ть следующим образом. Члены разных структур, представляющие и семантическую информацию, и дуги у некоторого обобщенного узла, имеют одинаковые имена и смещения от начала структур, а доступ к таким членам разных структур происходит через один и тот хе код на языке Си, оформленный в виде макроопределения. Данный подход к реализации сократил код, необходимый для навигации по внутреннему представлению, и, тем самым, компенсировал большой расход памяти для внутреннего представления исходной программы в виде графа.

Следует подчеркнуть, что внутреннее представление исходной программы в виде графа используется' на всех проходах компилятора, хотя сам граф мохет изменяться от прохода к проходу. Например, дуга на подграф, представляющий константное выражение, мохет быть заменена дугой на узел, представляющий значение этого выражения.

В первой главе также обсуждаются проектные решения, повышающие мобильность системы программирования языка Иодула-2. Под мобильностью в программировании принято понимать качественную характеристику возможности переноса программ в другу» среду. В начале обсуждения исследуется специфика и методы обеспечения мобильности компиляторов. После этого обосновывается выбор метода компиляции на ухе существующий маиинно-незаьнсимый язык. Таким языком может быть либо универсальный промежуточный язык, либо универсальный язык программирования. Проекты создания универсальных промежуточных языков потерпели неудачу. Поэтому, высокая степень мобильности может быть достигнута только при 'использовании широко распространенного универсального языка программирования. Наиболее пригодным для этого является язык Си. Естественно, что после этого и в качестве инструментального языка также лучше всего выбрать язык Си.

Как показала реализация системы программирования, после выбора языка Си в качестве инструментального и объектного языка реализации остаются не решенными ряд проблем, затрудняющих перенос системы программирования. Существует несколько факторов зависимости от среды, которые можно разбить на следующие группы: зависимость от диалекта языка Си

7 '

(наличие таких типов, как unsigned long и др.), зависимость от компилятора языка Си (например от алгоритма распределения памяти в компиляторе или от генерируемого кода), зависимость от ОС и, наконец, зависимость от системы команд 3811 (она проявляется в процедурах поддержки работы сопрограмм, реализуемых на ассемблере). Опыт переноса системы ■ программирования показал, что самые существенные из этих Факторов, влияющих на переносимость, - это зависисмость от центрального процессора ЗБИ и зависимость от компилятора . языка Си.

Основной способ увеличения мобильности кода - выявление, . четкая локализация и параметризация всех этих факторов. Каждый из факторов: зависимость от компилятора, от ОС. от центрального процессора, описываются в' отдельных файлах. Кроме того, файл, в котором описана зависимость от компилятора, содержит также описание зависимости от диалекта языка Си. При установке системы программирования в конкретную среду (под средой здесь понимается центральный процессор ЗБп, ОС и используемый Си компилятор) из этих * файлов формируется файл настройки на среду. Такое раздельное хранение описаний всех факторов зависимости от среды упрощает перенос системы программирования за счет использования части этих файлов в том случае, когда меняется только часть параметров среды, например только ОС или используемый Си компилятор.

В конце главы приводятся принятые к реализации расширения языка Кодула-2, на которые повлияли выбранные основные проектные решения. Наибольшее влияние сказал выбор в качестве объектного язика языка Си.

So второй главе описывается обдал структура системы программирования языка Модула-2. Подробно описываются ее • компоненты, при этом разъясняется, как достигается высокая . скорость их работы (требование, полученное при выборе основных проектных решений).

Систему программирования можно условно разделить на четыре компоненты: монитор, анализатор, генератор и отладчик. Кроме того, система программирования использует имеющиеся в распоряжении в данно1.'« среде компилятор языка Си и редактор связей. Анализатор вместе с генератором будем называть

О

компилятором. Все компоненты оформлены в виде отдельных процессов ОС UNIX. Исключением является монитор и анализатор, которые объединены в один' процесс.

Анализатор в силу принятых проектных решений - наиболее интенсивно используемая компонента системы программирования. Он работает в трех режимах; компиляции, сбора имен импортируемых модулей и создания внутреннего представления для отладчика.

Анализатор работает за два прохода. На первом проходе происходит лексический и синтаксический анализ и создается внутреннее представление исходной программы. Здесь же выполняется обработка описаний: создание узлов графа, представляющих неявный экспорт/импорт, замена' имен в описаниях на соответствующие определения, вычисление статических выражений в описаниях, проверка правильности описаний.

На втором проходе выполняется семантический анализ операторов: замена имен в операторах на соответствующие определения,.вычисление статических выражений в операторах, проверка правильности операторов. Все эти алгоритмы -различные модификации алгоритмов обхода графов. Большая скорость работы семантического анализа (менее 25Х времени работы всего компилятора) достигается за счет выбора в качестве внутреннего представления графа, реализованного в виде списковой структуры.

. Лексический анализ обычно занимает значительную часть от времени работы всего анапизатора (в данной системе программирования - 30D. Зго'объясняется тем, что в отличие от других фаз, которые работают с лексемами, лексический анализ проводится по-снпьопьно. Символов же.исходной программы в несколько раз больше, чем- лексем. Для ускорения работы лексического анализа, соответсвущий языку конечный j автомат реализован операторами управления инструментального ; языка программирования, а не таблицами, В самой лексическом анализаторе значительную часть времени занимает распознавание ключевых слов и стандартных идентификаторов (идентификаторов со стандартными значениями, например идентификаторов стандартных типов). Распространенные методы проверки принадлежности элемента мно/еству: такие как хэы-таолнцы,

9

различные сбалансированные деревья поиска (или двоичный поиск), структуры типа бор (tfie-структуры) и другие -несмотря на хорошую ассимптотическу» сложность алгоритмов (не более ОС log п)), для данного применения дают неудовлетворительные результаты. Обычно для быстрой идентификации ключевых слов и стандартных идентификаторов используют метод совершенных xsir функций. В описываемой системе программирования языка Иодула-2 используется другой метод (тлinimal pruned-O-trie forest), который описывается в данной главе. Как показали измерения, тзкзя реализация ' оказзлася на 2GI быстрее, чем использование.совершенных ' хэш-функций, созданных утилитой греп Ассоциации Свободного Программного Обеспечения. Время на распознавание ключевых слов и стандартных идентификаторов удалось свести к 25/i от времени работы всего лексического анализатора. .

Исходя из требований на скорость работы анализатора, было принято решение написать синтаксический анализатор вручную. Синтаксический анализатор системы программирования языка подула-2 является нисходящим и реализован в виде рекурсивных функций языка Си. Для ускорения работы синтаксического анализатора использовался метод выделения регулярных частей грамматики, которые реализовались операторами управления языка Си. Есего для реализации синтаксическо.-'о анализатора было написано 16 таких функций, большинство из которых рекурсивно (эти функции соответствуют ■ существенно рекурсиБнын нетерминалам грамматики).. В итоге оказалось, что синтаксический анализ стал занимать около 25)1 времени работы всего компилятора. Вместе с методом выделения регулярных частей грамматики описан метод нейтрализации синтаксических оыибок, который можно классифицировать как метид локальной нейтрализации синтаксических ошибок.

Генератор кода по внутренней/ представлений, подготовленному анализатором, создает текст на языке Си. Сначала генератор кода обрабатывает внутреннее представление описаний модуля, которое всегда находится в оперативной памяти. После этого считнвэется по-блочно внутреннее представление операторов в оперативную память из временного , Файла, созданного аымзатором. Зто внутреннее представление может обрабатываться генератором за шесть проходов. Несмотря

10

на такое обилие проходов, генератор кода работает очень быстро (около .301 времени работы всего компилятора тратится на работу генератора). Как и в случае семантического анализатора, причина этого в том, что в качестве внутреннего представления выбран граф, реализованный в виде списковой структуры. Далее в главе описываются основные проблемы, возникающие во время генерации кода с языка Модула-2 на язык Си, а такхе методы их решения.

В отличие от языка Си, в языке Модула-2 возможны влохенные процедуры. Для реализации доступа вложенной процедуры к параметрам или переменным охватывающей процедуры, все переменные процедуры собраны в одну структуру языка Си. Кроме того, генерируется статические переменные - указатели на эти структуры, значения которых устанавливаются при входе в соответствующую процедуру. Проблема доступа к параметрам ' охватывающих процедур решается аналогично.

Процедура, которая может быть сопрограммой, представляется на языке Си функцией с одним параметром. В случае обычного вызова процедуры, значение этого параметра нулевое. В случае же инициализации сопрограммы, значение ' данного параметра не нулевое. При таком значении параметра ; вызывается библиотечная функция, частично реализованная на ' ассемблере, которая инициализирует сопрограмму (различные

регистры и др.). : ■ Поскольку в языке Си нет модулей, их приходилось . реализовывать следующим образом'- Интерфейс модуля описывается через внешнюю структуру языка Си. Данная структура имеет имя, совпадающее с именем самого модуля. Экспортирует»! процедурам соответствуют члены структуры - указатели на функции, реализующие эти процедуры. После членов, представляющих экспортируемые объекты, описываются неэкспоптируемые переменные модуля.

Обработка блока операторов может производится за несть проходов. Первый проход генератора ознакомительный. Во время него принимается решения о том, какие проходы необходимо в дальнейшем сделать. Во время второго прохода генерируются структуры для передачи фактических параметров процедур, . вызываемых в данном блоке, Третий проход необходим для генерации временных переменных, которые используются при

передаче констант в качестве значения параметра вида "ARRAY OF WORD". Четвертый проход возникает при вызове подпрограммы на языке Фортран с константой в качестве фактического параметра. Пятый проход требуется для генерации временных переменных, необходимых для вызова процедуры-функции с результатом структурного типа. На последнем проходе (шестом) создается код для операторов блока.

Во второй главе также обсуждаются проблемы создания мобильных отладчиков.-Это обсуждение необходимо для обоснования метода реализации отладчика описываемом системы программирования. Основные проблемы - обилие форматов исполняемых файлов и бедность стандартных Форматов отладочной информации для описания таких конструкций языка Нодула-2, как , . модуль и сопрограмма.

Б случае вызова системы программирования в режиме отладки программы на языке Нодула-2, анализатор создает часть внутреннего представления всей программы, а затем запускается интерактивный отладчик, который использует его в своей работе. К основным возможностям отладчика относятся: установка точек прерываний на исходных строках программы, на входе в и выходе из тела модуля или процедуры; трассировки выполнения исходных строк программ и входов в и выходов из тела модулей или процедур; просмотр динамической цепочки вызоеов процедур; отображение значений переменных модулей. Останов на контрольной точке происходит, если на соответствующую строку передано управление, и если соответствующий модуль компилировался в отладочном режиме. данном режиме перед каждым оператором, который расположен первым на строке, генерируется вызов функции

newIn((номер строки)); Функция neuln, исследуя таблицу контрольных точек, которую формирует отладчик'при каждом запуске/возобновлении отлаживаемой программы, может остановить отлаживаемую программу. Недостатком такой реализации является замедление . работы отлаживаемой программы в 2-4 раза.

Монитор управляет работой всех компонент системы программирования, а также, при необходимости, запуском Си компилятора для построения объектного файла модуля иди всей программы.

В конце второй главы описываются стандартные модули системы программирования языка Иодула-2.

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

Высокая скорость трансляции программ на'языке Иодула-2 в программы на языке Си подтверждается тем, что в среднем до 702 (до 85I для транслятора) времени при компиляции модуля с . , языка Нодула-2 в объектный файл уходит на работу компилятора языка Си, Поэтому мо*но сказать, что скорость'работы компилятора системы программирования ограничена скоростью компилятора языка Си. Скорость работы анализатора доходит до 80 строк в секунду на самой медленной из объектных ЗВН - ЭВМ "Злектроника-85".

О компактности выбранного внутреннего представления говорит то, что расход оперативной памяти для хранения внутреннего представления на 32-битовых ЗВН при компиляции стандартных модулей системы программирования колебался от 38 до 66 Сайт на одну строку исходной программы. Для 16-битовых ЭВМ'эти цида почти ь лва раза иеньие.

Для оценки качества \ енерируемого кода использовались тесты программы ВепсЬИагК Из-за отсутствия у автора других компиляторов языка Нодула-2, сравнение произодилось с компилятором языка Паскаль ЗВН "Злектроника-85". На большинстве тестов код, ¿генерирований системой программирования языка Нодула-2, работал быстрее, чем аналогичный код, сгенерированный компилятором с языка Паскаль. Исключение составили тесты обращения к одномерному ц двумерному массивам с проверкой индекса, т.к. проверка диапазона на языке Модулэ-2 реализуется в виде функций на языке Си и большая чаггь времени расходуется на выполнение пролога и эпилога этих функций. Другим исключением явились

тесты вызова процедур без параметров и с параметрами, т.к. в реализации системы программирования языка Иодула-2 все структуры (динамическая цепочка вызовов и др.) приходится поддерживать явно соответствующим кодом на языке Си.

Приведенные оценки качества генерируемого кода подтверждают приемлемость реализации языка йодула-2 через . трансляцию на язык Си.

ЗАКЛЮЧЕНИЕ

Основные результаты работы выносимые на защиту; ■

1. Исследованы основные методы реализации систем программирования современных универсальных языков программирования. При этом основное внимание уделялось методам реализации раздельной компиляции, формам внутреннего (промежуточного) представления исходной программы, обеспечению высокой мобильности компилятора и методам реализации отладчика.

2. Создана методика реализации мобильных систем программирования, позволяющая выполнить их реализацию с небольшими трудозатратами. В ней следует особенно выделить методы быстрой трансляции на язык высокого уровня и методы реализации отладчика при трансляции на язык высокого уровня.

3. На примере реализации языка Нодула-2 показана приемлемость использования разработанной методики реализации мобильных систем программирования.

4. Реализована мобильная система программирования языка Нодула-2 на"ЗВН "Злектроника-85" в ОС VENIX, на ЗВН семейства VAX-11 в ОС ULTRIX и на PC AT в ОС XENIX. Для ассоциации свободного программного обеспечения (Free Software Foundation) из данной системы программирования был создан транслятор программ на языке Нодула-2 в программы на языке Си.. Транслятор был реализован в Unix-подобных ОС на базе различных Си компиляторов для следующих ЭВ11 и процессоров с 32-битовым слоеом: AMD 29000, Агш, Convex, FxB0, НР800, Intel 80386, Intel 80486, Intel S6003, Motorola 68003, Hotorola 68020, Motorola 850*0, HIPS, liS 32000, Pyramid, Roup (IBM PC/RU, IBM RS/60000, SPARC, Tahoe, Tron, VAX. Транслятор тестировался для VAX, 1БИ PC/RT, Hotorola 66020 (SUN-3) и Motorola 88000 (DG Aviion).

5. Результаты исследования-могут использоваться в аналогичных работах по созданию мобильных систем программирования современных универсальных языков программирования.

Основные результаты диссертации изложены в следующих публикациях:

1. Макаров В.Н. [¡обильная'система программирования языка Иодула-2. В сб. "Вопросы кибернетики. Программное обеспечение высокопроизводительных систем". П.: изд-во НСК АН СССР, 1991.

2. Макаров В.Н. Мобильная система программирования языка Нодула-2. Тезисы докладов 1-й ежегодной конференции Советской Ассоциации Пользователей Операционной Системы UNIX, 29 октября - 2 ноября 1590, Москва.

3. Макаров В.Н. Практичный метод оптимизации LHC1)-анализаторов. Программирование, 1988, N3.