ЭнергетикаМеталлургияХимия и нефтехимияГорнодобывающая отрасль, угольНефть и газАПК и пищевая промышленностьМашиностроение, производство оборудованияТранспортАвиация, аэрокосмическая индустрияАвто/МотоАудио, видео, бытовая техникаТелекоммуникации, мобильная связьЛегкая промышленностьМебель, лес, деревообработкаСтроительство, стройматериалы, ремонтДругие отрасли
|
|
АстроСофт завершил разработку универсальных компиляторов C/C++ для встроенных систем
AstroSoft Development
|
|
23-07-2002 |
В июле 2002 года специалисты компании АстроСофт завершили работы по оптимизации универсальных компиляторов C и C++ для встроенных систем. Полученный результат позволяет вывести данную разработку на рынок как уникальный, самостоятельный продукт.
✐ место для Вашей рекламы
Работы по созданию компиляторов были начаты в августе 1999 года, когда шведская компания ImSys заказала АстроСофт разработку компиляторов Си и С++ для своего нового микропроцессора. В целях успешного решения этой задачи в АстроСофт была создана Научно-исследовательская Лаборатория (НИЛ). Приступив к работе над созданием компилятора С++ для ImSys, сотрудники АстроСофт поставили задачу максимум: разработать компилятор, настраиваемый на целевую платформу эффективным способом. Этот проект получил название «универсальный компилятор». Создание такого компилятора потребовало принципиально нового подхода и решения ряда серьезных проблем: во-первых, компилятор должен соответствовать Стандарту ISO языка программирования C++ (ISO/IEC 14882:1998 Programming languages - C++), который был принят 1 сентября 1998 г.; во-вторых, получаемый код должен быть эффективным; в-третьих, компилятор должен быть легко настраиваемым (в сравнении с известным компилятором GNU C/C++) на любые целевые микропроцессоры и микроконтроллеры; и, наконец, последнее – исходный код компилятора должен быть легко переносимым. Особую сложность в таком проекте представлял поиск решения, удовлетворяющего двум принципиально противоречивым требованиям: первое — это необходимость реализации сильной оптимизации генерируемого кода, учитывающей особенности целевой платформы, и второе — это гибкая, сравнительно простая настройка кодогенератора на любую целевую платформу. Необходимое решение было найдено специалистами АстроСофт, благодаря чему полученные компиляторы отличаются от аналогичных продуктов сочетанием этих двух качеств.
Готовые версии компиляторов С/C++ были получены в 2001 году, а оптимизирующего компилятора С++ — в июле 2002 года. Проект оказался чрезвычайно ресурсоемким, общая его длительность составила 24 человек/лет, но как говорится «цель оправдывает средства», в результате был создан универсальный компилятор, который за короткий срок настраивается на любой целевой процессор. Полученный продукт можно использовать как технологию для быстрой разработки новых компиляторов. Разработка данной технологии является НОУ-ХАУ компании АстроСофт.
По словам генерального директора Павла Васильева «сложно было не только разработать такой продукт, как универсальный компилятор С++, но и поставить перед собой такую амбициозную задачу»: «Мы сделали это – создали универсальный компилятор, разработка которого людьми посвященными признается делом практически незавершимым. Рынок встраиваемых систем революционен по своей сути, он постоянно меняет наши представления о мире и о возможностях, которыми мы владеем. Однако и в самой революционной на сегодняшний день технологической области произошла своя тихая революция».
СПРАВ- КА: В основе разработанного решения, позволившего создать оптимизирующий компилятор, легко настраиваемый на целевую платформу, лежит выделение фаз кодогенерации и оптимизации в отдельные компоненты компилятора BackEnd и MiddleEnd, которые не зависят от фазы анализа входного текста FrontEnd. Взаимодействие между компонентами выполняется через внутреннее представление исходной программы, которое играет роль интерфейса между фазами и в свою очередь доступно через специальный интерфейс. Кодогенератор состоит из универсального алгоритма кодогенерации и информации о конкретной целевой платформе, организованной в виде описания целевой платформы на специально разработанном языке. Это описание названо «кодогенерационной таблицей». Алгоритмы оптимизациии разделены на высокоуровневые (универсальные алгоритмы, ориентированные на оптимизацию исходного текста, написанного на языке высокого уровня) и низкоуровневые (оптимизацию машинного кода). При этом даже высокоуровневая оптимизация учитывает информацию о целевой платформе, предоставляемую кодогенерационной таблицей. Таким образом, несмотря на то, что в основу архитектуры этого продукта был положен принцип «универсальности» (гибкой настраиваемости на целевую платформу), получаемый в результате код является в высокой степени оптимизированным, его отличает гибкость, легкость сопровождения, возможность повторного использ- ования. Разработка компилятора C++ по сравнению с компилятором C имела дополнительную сложность: это — полноценная поддержка шаблонов, эффективная реализация поддержки времени исполнения (схема обработки исключений, объектные модели), преодоление двусмысленности синтаксиса языка С++. Двусмысленности языка C++ были полностью разрешены с помощью специального генератора синтаксических анализаторов, разработанного специалистами АстроСофт на основе широко известного инструмента YACC. Объектных моделей в компиляторе C++ компании АстроСофт было реализовано несколько (в том числе совместимые с использующимися в компиляторах Microsoft и Borland). Синтаксис шаблонов удалось полностью распознать с помощью полученного мощного синтаксического анализатора. Семантика шаблонов была реализована частично — в рамках наиболее часто используемых возможностей. Однако, реализация недостающих возможностей, в том числе, экспорт шаблонов, не является большой проблемой благодаря особенностям архитектуры универсальных компиляторов (разделению фаз FrontEnd, MiddleEnd и BackEnd, и их взаимодействию через интерфейс внутреннего представления), поскольку можно создать предварительный компоновщик кода, оперирующий непосредственно с внутренним представлением модулей исходного текста.
Компания АстроСофт образована в Санкт-Петербурге в 1991 году и занимается поставкой продуктов и услуг в области информационных технологий. Имеет статус Microsoft Certified Partner (Сертифицированный Партнёр «Майкрософт») и входит в Dator top100 (список ста наиболее профессиональных компаний компьютерного бизнеса России). В 2000 году была создана группа компаний АстроСофт, в которую вошли компании АстроСофт, AstroSoft Development, СПУТНИК 101.
Научно-исследовательская лаборатория АстроСофт (НИЛ) была основана в 1998. Деятельность НИЛ сосредоточена на проектировании и разработке сложного программного обеспечения. Основное направление — разработка инструментальных средств программирования для поставщиков аппаратного и программного обес- печения.
Опубликовано: 23 июля 2002 г.
Ключевые слова: нет
Извините, комментариев пока нет
|