Исследование методов оптимизации программ м разработка оптимизирующего компилятора с языка паскаль для центрального процессора АС-6 тема автореферата и диссертации по математике, 01.01.10 ВАК РФ
Челноков, Валерий Павлович
АВТОР
|
||||
кандидата физико-математических наук
УЧЕНАЯ СТЕПЕНЬ
|
||||
Москва
МЕСТО ЗАЩИТЫ
|
||||
1984
ГОД ЗАЩИТЫ
|
|
01.01.10
КОД ВАК РФ
|
||
|
ВВЕДЕНИЕ.
ГЛАВА I. АНАЛИЗ ОСНОВНЫХ МЕТОДОВ ОПТИМИЗАЦИИ ПРОГРАММ
1.1. Оптимизация циклов
1.1.1. Циклы - ключевые места при оптимизации программы
1.1.2. Основные виды.оптимизации циклов
1.1.2.1. Вынос инвариантов из тела цикла
1.1.2.2. Оптимизация индуктивных вычислений
1.1.2.3. Уменьшение числа параметров в цикле
1.1.2.4. Расширение возможностей итеративного цикла в Паскале
1.1.2.5. Буферизация циклов
1.1.2.6. Использование команды "Конец цикла"
1.2. Сравнительная характеристика лр^альной и глобальной оптимизаций.
1.2.1. Основные методы экономии памяти программы . ££
1.2.2. Характеристика линейной оптимизации
1.2.3. Характеристика методов глобальной оптимизации
1.2.3.1. Анализ потока управления и анализ потока данных.
1.2.3.2. Нахождение доступных выражений.
1.2.3.3. Оценка времени сходимости алгоритмов АПД .¿б
1.2.3.4. Оценка влияния глобальной оптимизации .25Г
1.3. Оптимизация в рамках регулярного графа.
1.3.1. Абстрактные циклы
1.3.2. Переход от абстрактного УТЛ к синтаксическому
УГП .гг
-51.3.3. Последовательный вынос инвариантных вычислений из вложенных циклов.
1.4. Вида оптимизирующих компиляторов .2В
1.4.1. Оптимизирующий компилятор с промежуточным э кодом.
1.4.2. Оптимизация на исходном языке
1.4.3. Синтаксический оптимизатор .¿
1.4.4. Покадровая оптимизация
1.5. Выбор схемы для построения оптимизирующего Паскаль-компилятора.
1.5.1. Классическая методика реализации Паскаль-компилятора
1.5.2. Компилятор с универсальным промежуточным кодом
1.5.3. Схема реализации Паскаль-компилятора для ЦП
ГЛАВА 2. МЕТОДЫ МАШИННО-НЕЗАВИСИМОЙ ОПТИМИЗАЦИИ ПРОГРАММ
2.1. Представление линейного блока в виде ориентированного ациклического графа
2.2. Основные виды линейной оптимизации
2.2.1. Экономия эквивалентных вычислений
2.2.2. Свертка вычислений, состоящих из одних констант
2.2.3. Устранение избыточных операторов присваивания. 3?
2.2.4. Оптимизации, опирающиеся на конкретные значения операндов
2.2.5. Выделение постоянной составляющей в индексном выражении.
2.2.6. Экономия эквивалентных вычислений с учетом использования операций отношения.¡
-42.2.7. Оптимизадш эквивалентных вычислений функций.
2.2.8. Влияние побочных эффектов при обращениях к процедурам/функциям
2.3. Обзор методов линейной оптимизации
2.3.1. Метод нумерации значений
2.3.2. Линейная оптимизация в компиляторе ФОРЕКС
2.3.3. Использование коммутативно-ассоциативных законов для упорядочивания выражения.
2.4. Внутренее представление линейного блока
2.4.1. Структура триады.
2.4.2. Описание эквивалентных вычислений с помощью триад.
2.4.3. Преобразование триад в переменные и константы.
2.4.4. Инвариантные триада
2.4.5. Индуктивные триады .4?
2.4.6. Вынесенные триады .4?
2.4.7. Особенности оптимизации операций отношения. 4?
2.4.8. Структура адресных триад
2.4.9. Представление переменных в рамках промежуточного кода. 5Í
2.4.10. Представление констант в промежуточном
2.5. Оптимизация регулярных циклов.
2.5.1. Структура синтаксического УТЛ
2.5.2. Вынос инвариантных триад из тела регулярного цикла
2.5.3. Оптимизация индуктивных вычислений . 5&
2.5.3.1. Описатель итеративного цикла в промежут очном коде
2.5.3.2. Преобразование индуктивных вычислений
ГЛАВА 3. КОМПЛЕКСНАЯ ЛИНЕЙНАЯ ОПТИМИЗАЦИЯ .$
3.1. Описание оптимизирующих преобразований выражений Паскаля.
3.1.1. Представление выражения в виде ассоциативного дерева
З.Х.2. Перестановка констант . 62.
З.Х.З. Перестановка вещественных и целых операндов
3.1.4. Перестановка 5ЕТ - операндов
3.1.5. Упорядочивание операндов в ассоциативной кисти.б
3.2. Описание алгоритма линейной оптимизации.££
3.2.1. Основные и вспомогательные структуры линейного оптимизатора.
3.2.2. Структура стека вычислений и его использование для поиска эквивалентных триад.
3.2.3. Назначение и структура
3.2.4. Особенности поиска эквивалентных адресных триад.
3.2.5. Особенности поиска эквивалентных обращений к стандартным функциям.
3.2.6. Обработка операторов присваивания простым. 41 переменным.
3.2.7. Обработка триад присваивания структурным переменным.?
3.2.8. Обработка операторов присваивания вариантным полям записей.
-63.2.9. Обработка триад присваивания массовым и динамическим переменным.7к
3.2.10. Устранение избыточных триад присваивания
3.2.11. Особенности использования констант . 7?
3.2.12. Грубая оценка влияния побочного эффекта . 7 В
3.2.13. Описание первого прохода оптимизации . ЬО
3.2.14. Описание второго прохода оптимизации . ^
ГЛАВА 4. МЕТОДЫ М/ШМО-ЗАВИСИМОЙ ОПТИМИЗАЦИЙ.
4.1. Обзор методов машинно-зависимой оптимизации . £
4.1.1. Метод распределения регистров с помощью счетчиков использований
4.1.2. Распределение индекс-регистров в линейном блоке и простых циклах.
4.1.3. Алгоритм глобального распределения регистров.
4.1.4. Генерация команд для линейных блоков в компиляторе ФОРЕКС
4.2. Связь между машинно-независимой и машинно-зависимой оптимизацией.£5*
4.3. Краткие сведения о ЦП.В В
4.3.1. Структура регистров в ЦП. &
4.3.2. Скрытый стек и программный магазин.
4.4. Представление простых паскалевских типов через машинные типы ЦП
4.5. Оптимизации, связанные с распределением памяти для размещения переменных.
4.6. Оптимизации, связанные с распределением регистров в линейном блоке
4.6.1. Задачи подготовки операндов и распределение регистров . 3 к
-74.6.2. Описатель состояний операндов . 9S
4.6.3. Структура полного описателя операнда триады
4.6.4. Структура таблицы регистров.9&
4.6.5. Генерация команд из триад линейного блока
4.6.6. Алгоритм распределения регистров процедура 6ETREÓ )
4.7 Глобальное распределение регистров для
-циклов .tOS
4.8. Эффективная реализация CASE, -оператора.
4.9. Покадровые оптимизации.
4.10. Характеристика ЦП как Паскаль-машины.
ГЛАВА 5. АНАЛИЗ РАБОТЫ 0ПТИШЗИРУЮЩЕГ0 КОМПИЛЯТОРАÍOÍ
5.1. Оценка качества откомпилированных программ . ¿
5.2. Исследование влияния оптимизации на ускорение программ
5.2.1. Измерение временных характеристик Паскаль-тестов .i
5.2.2. Буферизация циклов .U
5.2.3. Особенности оптимизации условных циклов
5.2.4. Дополнительные особенности оптимизации циклов
5.3. Измерение качества межпроцедурных взаимодействий
5.4. Оценка эффективности реализации IF - и
- операторов. И^
5.5. Анализ эффективности обработки упакованных данных.
5.6. Оценка эффективности алгоритмов распределения регистров
-65.7. Оценка эффективности алгоритмов экономии памяти.it?
5.7.1. Экономия программного кода . 11?
5.7.2. Экономия памяти, занимаемой переменными . ii? 5.8. Введение в компилятор средств анализа статического и динамического профилей программ
ГЛАВА 6. ЭФФЕКТИВНАЯ РЕАЛИЗАЦИЯ РАСШИРЕНИЙ ПАСКАЛЯ
6 Д. Параметризация типов . 12.
6.2. Использование новых возможностей итеративного цикла.
Диссертационная работа посвящена вопросам разработки основных оптимизирующих алгоритмов и их использования при создании оптимизирующего компилятора с расширенного варианта языка Паскаль [5] для центрального процессора (ЦП) многомашинного комплекса АС-б [2].
Актуальность темы. Языки высокого уровня находят все более широкое применение во всех областях программирования. Однако их использованию часто препятствует низкая эффективность откомпилированных программ в сравнении с соответствующими программами на автокоде.
Для повышения эффективности рабочих программ на всех промышленных компиляторах применяется технология оптимизации. Поэтому актуальной задачей является создание таких методов оптимизации программ, которые, с одной стороны, дают большой вклад в увеличение эффективности рабочих программ, а, с другой стороны, просты при их реализации в оптимизирующем компиляторе.
Кроме того, важной задачей является создание для отечественной ЭВМ ЦП АС-6 оптимизирующего Паскаль-компилятора. Это связано с тем, что язык Паскаль, созданный первоначально в основном для учебных целей, получил широкое распространение и часто используется в качестве основного инструмента при создании больших систем программирования.
Необходима также разработка методов оценки качества оптимизирующей компиляции и аттестации транслятора в целом.
Сущность оптимизации. Исходная программа, поступающая на вход компилятора, представляет собой описание на языке программирования некоторых вычислений и действий. Задача компилятора состоит в преобразовании исходной программы в объектную программу, которая специфицирует заданные вычисления и действия на языке объектной машины.
Для каждой исходной программы можно получить бесконечное множество объектных программ. Эти объектные программы могут быть лучше или хуже относительно друг друга по разным параметрам, прежде всего по времени их выполнения на машине или по объему занимаемой ими памяти.
Оптимизацией программы называется используемая компилятором технология для получения объектной программы, превосходящей по оптимизационным параметрам такую объектную программу, которая наиболее просто и естественно получается из исходной программы. В общих чертах процесс оптимизации заключается в обнаружении и замене программных конструкций на более эффективные.
Основные виды оптимизаций. Все оптимизации разделяются на глобальные и локальные. Глобальные оптимизации проводятся в рамках всей программы с учетом всех составляющих ее частей. Локальные оптимизации выполняются только в пределах отдельных фрагментов программы.
В качестве элементарного фрагмента программы для проведения локальной оптимизации обычно выбирается линейный блок. Линейный блок имеет один вход и один выход и состоит из последовательно выполняемых элементарных операторов.
В программах блок представляет собой линейную последовательность операторов присваивания и операторов процедур. Эта последовательность операторов не должна содержать внутри себя меток. Начало такого блока может быть помечено, а в конце блока может стоять оператор перехода или оператор EXIT.
Кроме того, отдельные блоки образуют следующие компоненты структурных операторов:
-ii- определяющее выражение оператора CASE :
- выражения для вычисления предельных значений параметра
FOR - цикла;
- условные выражения операторов IF, WHILE и REPEAT.
Для проведения глобальной оптимизации необходимо знание управляющего графа программы (УГП), отражающего все пути (без учета межпроцедурных взаимодействий), по которым распространяется поток управления во время выполнения программы. Исследуя УШ, можно узнать, какая информация поступает к каждому узлу графа. Узлами УШ являются линейные блоки, а ребра УШ соответствуют распространению потока управления между блоками. Блоку, с которого начинается выполнение программы, соответствует начальный узел УШ,
Оптимизации программ разделяют также на два вида: машинно-независимый и машинно-зависимый.
К первому виду относятся такие оптимизации, которые одинаковы для всех машин, например, вычисление константных конструкций программы.
Машинно-зависимые оптимизации связаны с улучшением объектного кода для конкретной машины. К этому виду оптимизаций относится, например, распределение регистров машины для размещения операндов.
Основная проблематика. Известно много методов улучшения программ, начиная от покадровых и кончая глобальными оптимизациями. В зависимости от языка, объектной машины и способа реализации их применение дает разный эффект.
Так, например, сравнительно простая технология локальной оптимизации, используемая в компиляторе
ФОРЕКССп], существенно ускоряет рабочие программы. Использование же в компиляторе с языка достаточно сложной глобальной оптимизации мало способствует улучшению откомпилированных программ.
Поэтому главная задача при создании промышленного компилятора заключается в том, чтобы сконструировать такие оптимизирующие алгоритмы, которые, с одной стороны, дают большой вклад в увеличение эффективности рабочих программ, а, с другой стороны, достаточно просты в реализации.
Ваяно также исследовать работу готового компилятора при трансляции типовых программ и сделать обобщающие выводы о способах оптимизации программ для некоторого класса исходных языков и объектных машин.
Кроме того, промышленный компилятор должен удовлетворять противоречивым требованиям на разных этапах создания программного обеспечения.
В процессе отладки пользовательской программы необходима ее частая и, следовательно, быстрая компиляция, а качество получаемого кода не имеет большого значения. И, наоборот, после отладки программы важно получить в результате ее компиляции эффективную рабочую программу.
Так как оптимизация компилируемой программы требует дополнительных расходов машинного времени и памяти, то целесообразно иметь два режима компиляции: не оптимизирующий (с быстрой компиляцией) и оптимизирующий (с получением эффективного рабочего кода).
В диссертационной работе обсуждаются также вопросы эффективной реализации основных расширений языка Паскаль [б"]. Введение этих расширений не затрагивает реализацию традиционной части языка.
Стоит отметить, что некоторые расширения Паскаля, прежде всего явная спецификация шага итеративного цикла, помимо придания языку новых качеств и улучшения наглядности программы, дают возможность компилятору получать более эффективные рабочие программы.
Цели работы. Основными целями диссертационной работы были разработка оптимизирующих алгоритмов и их использование при создании Паскаль-компилятора для ЦП.
К быстродействию вычислительных систем, работающих на ЦП, предъявляются повышенные требования. Поэтому основным показателем степени оптимизируемости рабочей программы было выбрано время ее выполнения.
Наибольший эффект при минимизации времени выполнения программы дает оптимизация циклов. В Паскаль-компиляторе применялись следующие виды оптимизации циклов:
- вынос инвариантов из циклов;
- оптимизация индуктивных вычислений;
- буферизация циклов;
- использование команды "конец цикла".
Следующим по значимости параметром оптимизации для ЦП является экономия памяти, занимаемой кодом и переменными программы. Для экономии программного кода использовались следующие оптимизации:
- однократное программирование эквивалентных вычислений;
- вычисление константных конструкций;
- устранение избыточных операторов присваивания и ряд других оптимизаций [15].
Алгоритм распределения переменных в памяти построен таким образом, чтобы экономия памяти достигалась не за счет потерь в эффективности работы. Этому способствовала четырехформатная адресация ЦП [2].
Обычно Паскаль-компилятор для быстродействующей ЭВМ с большой памятью реализуют по однопроходовой схеме [39] . В этом случае достигается высокая скорость компиляции за счет минимизации числа обращений ко вторичной памяти. Что касается качества кода, то предполагается, что на большинстве ЭВМ реализация конструкций Паскаля будет достаточно эффективной, и не потребуется интенсивной оптимизации для улучшения кода.
Очевидно, что компилятор, построенный по однопроходовой схеме, будет отличаться высокой скоростью трансляции, но, в общем случае, невысоким качеством объектного кода. Поскольку при создании Паскаль-компилятора для ЦП ставилась задача получить оптимизирующий компилятор, то для реализации этого компилятора была выбрана нестандартная трехпроходовая схема с промежуточным кодом, которая включает в себя следующие фазы работы компилятора: синтаксический анализ, машинно-независимую оптимизацию и генерацию объектного кода (последняя фаза проводится совместно с машинно-зависимой оптимизацией).
В терминах промежуточного кода производится машинно-независимая оптимизация. Этот же код поступает на вход генератора объектного кода. Поэтому структура промежуточного кода максимально приспособлена для проведения фаз оптимизации и генерации объектного кода.
Указанная схема позволяет разделить машинно-независимую и машинно-зависимую оптимизации, а также легко организовать в компиляторе оптимизирующий и неодтимизирующий режимы трансляции (в последнем случае фаза машинно-независимой оптимизации отсутствует).
Выбор такой схемы компиляции объясняется еще одной причиной: предполагается в дальнейшем использовать отлаженный синтаксический оптимизатор и машинно-независимый оптимизатор при реализации
Паскаль-компиляторов да других машин. В этом случае дополнительно потребуется создание лишь генератора объектного кода для конкретной ЭВМ.
Методы исследования. При разработке Паскаль-компилятора широко использовались результаты теории компиляции и теории графов [8,9,63]. Употреблялись также такие методы программирования, как методы поиска, организации информационных структур и т.д.
Большое значение имели принципы структурного программирования, использовавшиеся как при проектировании компилятора в целом, так и при детальной разработке его отдельных частей.
Научная новизна.
I. Предложена и реализована в Паскаль-компиляторе для ЦП АС-6 схема смешанной оптимизации программ: синтаксическая оптимизация регулярных циклов, внутри которых отсутствуют операторы
2. Предложен универсальный промежуточный код, приспособленный для оптимизации и генерации объектного кода. Этот код представляет собой композицию синтаксического графа потока управления программы и списков триад линейных блоков и отличается компактностью, что способствует компиляции больших программ. Кроме того, структура этого кода лучше отвечает требованиям оптимизации, чем Паскаль-код (псевдокод для виртуальной Паскаль-машины, часто используемый в качестве выходного кода мобильных Паскаль-кошшгяторов).
3. Предложены и реализованы методы эффективной реализации расширений языка Паскаль, таких как:
- параметризация типов данных;
- введение шага в итеративном цикле. перехода и и локальная оптимизация программы
-164. Введены в язык Паскаль машинно-зависимые структурные типы данных: MACHINE RECORD и MACHINE
ARR А У ДОШ реализации машинно-зависимых процедур компилятора, например, подпрограммы генерации загрузочного модуля. Это позволило свыше 95$ объема компилятора написать на Паскале и тем самым облегчило его перенос с одной ЭВМ на другую.
Практическая ценность. Разработан и реализован Паскаль-компилятор для ЦП АС-6, который обеспечивает получение рабочих программ, не уступающих программам, тщательно составленным вручную на автокоде. Компилятор прошел испытания и в настоящее время находится в эксплуатации в ИПМ АН СССР, в/ч 73790 и ЦНИИМАШ.
Опыт разработки, а также методы оптимизации могут быть использованы при разработке компиляторов для современных ЭВМ.
Апробация. Результаты диссертационной работы докладывались на следующих конференциях и семинарах:
- на Конференции молодых ученых и специалистов НИИ "Дельта",
1981;
- на 2-ой Всесоюзной Конференции "Автоматизация производства и проектирования прикладных программ и трансляторов", апрель 1983, г.Таллин;
- на семинаре "Архитектуры ЭВМ и численные методы", отдел вычислительной математики АН СССР, март 1984.
Диссертация состоит из 6 глав.
В первой главе анализируются основные методы оптимизации программ. Описывается структура Паскаль-компилятора для ЦП.
Вторая глава посвящена рассмотрению вопросов машинно-независимой оптимизации.
В третьей главе описывается алгоритм комплексной линейной оптимизации, реализованный в Паскаль-компиляторе для ЦП.
Четвертая глава содержит основные сведения о машинно-зависимых оптимизациях. Там же описывается алгоритм машинно-зависимой оптимизации, использованный в Паскаль-компиляторе.
В пятой главе анализируются результаты исследования работы компилятора при компиляции типовых тестов.
Шестая глава посвящена описанию реализации расширений Паскаля.
В заключении излагаются выводы, полученные на основе реализации и эксплуатации Паскаль-компилятора дои ЦП АС-6.
Публикации. На тему диссертации опубликовано 4 работы.
ЗШЮЧЕНИЕ
1 * *
Основшши результатами диссертационной работы являются создание оптимизирующего Паскаль-компилятора для ЦП, а также исследование его работы при компиляции типовых программ. Это исследование показало правильность выбранной стратегии оптимизации, так как откомпилированные программы сравнимы по качеству с программами, тщательно составленными вручную на автокоде. Оптимизации, проводимые в Паскаль-компиляторе, дают существенный вклад в ускорение рабочих программ (см.Приложение 21).
Для достижения поставленных целей оптимизации была выполнена следующая работа:
1. Исследованы методы линейной оптимизации программ. Разработан и реализован алгоритм комплексной линейной оптимизации, который включает в себя оптимизирующие переупорядочивания выражений и локальную оптимизацию методом нумерации значений. В тех местах программы, где это возможно, диапазон применения локальных оптимизаций увеличивается.
2. Исследованы методы оптимизации циклов. Разработан и реализован алгоритм глобальной оптимизации регулярных циклов. Этот алгоритм включает в себя вынос инвариантов в предзаголовки циклов и свертку индуктивных вычислений.
3. Исследованы методы генерации объектного кода. Разработан и реализован алгоритм оптимального распределения регистров для размещения параметров циклов и операндов линейных блоков.
4. Разработан универсальный промежуточный код, приспособленный для оптимизации и генерации объектного кода.
5. Осуществлена эффективная реализация основных расширений языка Паскаль [б! .
6. Разработаны и реализованы средства анализа статического и динамического профилей компилируемых программ.
В работе над созданием оптимизирующего компилятора с расширенного варианта языка Паскаль совместно с автором принимали участие Гуслистый В.П. и Абрамян A.A. Автором написаны и отлажены основные семантические и оптимизирующие подпрограммы компилятора, а также разработана общая схема компиляции. Общий объем программ, написанных автором, составляет примерно 10000 строк.
Создание Паскаль-компилятора для ЦП производилось в два этапа. Сначала этот компилятор, написанный на Паскале, был отлажен на БЭСМ-6, где имеется компилятор с Паскаля. Затем была проведена "раскрутка" компилятора, то есть компилятор оттранслировал свой собственный текст на БЭСМ-6, а полученный код был перенесен на ЦП.
Стоит отметить, что для отладки компилятора на БЭСМ-6 использовался интерпретатор ЦП.
Паскаль-компилятор прошел испытания в 1982 г. и в настоящее время эксплуатируется в следующих организациях: ИПМ Ш СССР, в/ч 73790 и ЦНИИМАШ. Общий объем компилятора составляет 50 К слов, а скорость компиляции - 9000 строк в минуту.
Опыт разработки, а также используемые методы оптимизации могут быть применены при разработке компиляторов для современных ЭВМ.
Разработаны практические рекомендации для программирования на Паскале, используя которые пользователь может способствовать оптимизации своих программ [5].
По теме диссертационной работы были сделаны доклады на следующих конференциях и семинарах:
- на Конференции молодых ученых и специалистов НИИ "Дельта",
-1251981 г.;
- на второй Всесоюзной Конференции "Автоматизация производства и проектирования прикладных программ и трансляторов", апрель 1983 г., г.Таллин;
- на семинаре "Архитектуры ЭВМ и численные метода", отдел вычислительной математики АН СССР, март 1984 г.
Подводя окончательные итоги диссертационной работы, можно сделать следующие выводы:
- на основе анализа различных способов оптимизации программ предложен метод смешанной оптимизации, который включает в себя оптимизацию регулярных циклов и локальную оптимизацию в рамках всей программы;
- разработан универсальный промежуточный код, приспособленной для проведения оптимизации и генерации объектного кода;
- предложены методы эффективной реализации расширений Паскаля;
- создан и внедрен в опытную эксплуатацию оптимизирующий Паскаль-компилятор для ЦП АС-6;
- исследование работы готового Паскаль-компилятора подтвердило правильность выбранного подхода к оптимизации программ;
- внесены предложения по способам аттестации оптимизирующих компиляторов.
ПРИДОЖЕНИВ 1а. Сводная таблица относительных времен выполнения тестов (за единицу принято время рабочей программы транслятора ФОРЕКС, в котором реализована тщательная оптимизация внутренних циклов). тест гране-лятор I 2 3 4 5 6 7 8
ФОРЕКС 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00
Фортран-ДУБНА 6.80 5.88 6.62 4.14 3.19 1.44 1.33 1.30
•Фортран-ГДР 7.72 1.00 1.00 - 2.60 1.62 1.11 1.95
Форшаг 5.75 6.38 7.50 3.21 3.61 2.31 2.67 1.10
Алгол-ГДР 1.00 2.00 2.00 1.00 1.73 1.56 1.45 4.35
Компл.Алгол 8.45 5.25 8.50 4.57 5.39 3.30 3.45 1.00
Алгамс 8.35 5.50 7.50 4.21 5.00 2.81 3.22 2.00 тест транслятор ^^ 9 10 II 12 13 14 15 16
ФОРЕКС 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00
Фортран-ДУБНА 2.78 1.67 1.31 3.22 2.60 1.00 1.00 2.60
Фортран-ГДР 1.12 - 1.44 2.33 1.14 1.20 1.00 2.40
Форшаг 2.62 1058 2.50 5.45 2.25 0.88 0.96 3.37
Замечания: I. Указанные измерения производились на БЭСМ-6.
2. Подробное описание тестов и трансляторов имеется в [II] .
1. Под ред. Ершова А.П., Новосибирск, Наука, СО, 1967. Альфа система автоматизации программирования.
2. Чайковский М.Г. и др. Автокод для центрального процессора системы АС-6. ИТЭФ-153., М., 1976.
3. Абрамян A.A., Гуслистый В.П., Иванников В.П., Челноков В.П. Особенности реализации расширенного языка Паскаль для Ш АС-6, 1983. Сб. "Различные аспекты системного программирования", МГУ, стр.106-105.
4. Абрамян A.A., Гуслистый В.П., Челноков В.П. Язык Паскаль-АС-6 и основные особенности его реализации на ЦП АС-6, 1984.
5. Сб. "Вопросы кибенрнетики. Проблемы создания высокопроизводительных ЭВМ". АН СССР. Научный совет по комплексной проблеме "Кибернетика", М., стр.126-141.
6. Абрамян A.A., Галатенко В.А., Гуслистый В.П., Иванников В.П., Челноков В.П. О некоторых расширениях языка программирования Паскаль. 1982, Препринт ИПМ $ 34.
7. Абрамян A.A., Гуслистый В.П., Иванников В.П., Челноков В.П. Расширенный Паскаль язык системного программирования, 1981. Сб. "Различные аспекты системного программирования", МГУ, 81-88.
8. Йенсен К., Вирт Н. Паскаль. Руководство для пользователей и описание языка. Москва, Финансы и статистика, 1982.
9. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. Мир, М., 1978.
10. А.Ахо, «fljs. Ульман. Теория синтаксического анализа, перевода и компиляции, т.2.Компиляция, Мир, М., 1978.-£5910. Вик 0. Штаркман. Локальная оптимизация объектной прог- . раммы в трансляторе ФОРЕКС. Препринт ИПМ АН СССР, 1979, & 149.
11. В.С.Штаркман. Сравнительный анализ транслятора ФОРЕКС. Препринт ИПМ АН СССР, 1978, № 129.
12. Ходулев А.Б. Методы глобальной оптимизации программ на исходном языке. Препринт ИПМ АН СССР, 1981, № 18.
13. Галатенко В.А., Ходулев А.Б. Реализация транслятора ФОРЕКС для ЦП АС-6. Препринт ИПМ АН СССР, 1979, № 59.-ièo
14. STAK. /• bfipbé., к* 5£9- £32/'
15. A ho A. (u/v UMtfCL+r I.V. tfode, à'sûcstrt fbLolt+caA&L, bfttyhi. ¿97 G ^ t Com/>uS< сигъ
16. У. C, . с/^л сЛ у Со mettre aJ?/>Ao0.cJi, ío
17. Optc'/YitgCLZCO/r fog ¿9?2 . d1. JVC,
18. W&ct W.K. OptCfACéajtcKtT* i+r EccáU", 5Í9-¿0¿.39. til/bth yf. Tb- oft^toyn OF Ä /kscxZ Cor/fa&jt, X9T£, £ojfí. Р/шЖ. í*Jt> ëy/oejUb+tcb ,kO. A.K. мЭ Я static cl/ÎA,€-u&g
19. OF Pciîcjut /¿огЛ&т . -f/eac.
20. OsfSfi t9Í¿, 1/. } $S3-9€b
21. PJ-Mefco/T. J! comparu kLo/f PazccU UMiyMfti, rtot.?f P.L. £céti> KachctJa pA/olefiend&rjé Paient Oodi opÎiMÎtatcoAf) Sfofî- MoÙc?,k?. 6J. Sfiou ¿¿g a^à X 0. Coï
22. Т. £МУАСЬ1 /?.£19?¿J Ostrt ОрЬсмСЪаЛгоът/of Сон/\jrftutif qte^stCuL- HaZZ, bncjfawoo^L, S6. HoñQbJCtz Lf. freie* fUftUt*. ¿d5? /Seeiéty- Л AlvCIÍM. ^ViWoJLyot¿bkм t W KM4ÍCfitBhl, 6Ï-S8.
23. M. íha^Afí., Sttwc^íd ne*) oJípüoOich io f¿o\N frnalytffi! piï ерЁСмСгш
24. Ч.Н. btfZL /t. Уси&сиц&и EÍ9&01,-oñ </¡.L CAoti w* eéL TÁi pf^u^n rf a data fCovj Í9i¿? ^ •¿об ¿ •
25. Доттои^Н. On mu и* иул^Яьощия ñ/ize^*pAfiÎGMUSl и и/х послам ТеЛЬМОС-МЬ . Ст.1. С^сГе^ыног ¿¡мия- i-Hoív1. Gü. 0Ж. lïQÀiumewtuAM.
26. ИосЛъч о riñЫЛШЪиЛ UVPUj vupees. O. OPE. Гр&фн * w* n/ouмерные.1. УТВЕРВДАЮ"1. Ы АКТ
27. Настощц|1^$^оставлен в том, что в в/ч 73790 с ноября 1983 года находится в опытной эксплуатации система црограммиро-вания на базе языка Паскаль-АС-6 (расширенная версия языка программирования Паскаль).
28. Данная система программирования имеет важные практические приложения и используется цри создании системного математического обеспечения, а также при выполнении научно-исследовательских работ.1. КОМАНДИР В/Ч 73790-Ё1. ОНИЩЕНКО
29. ПРУДНИКОВ НАЧАЛЬНИК ЛАБОРАТОРИИ "САФОНОВу с/г> п 9/~ х/