Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Microsoft Phoenix , разрабатываемый в Microsoft Research , представляет собой основу для разработки компиляторов, а также инструментов анализа, тестирования и оптимизации программ, которые будут использоваться в качестве серверной части для будущих технологий компиляторов от Microsoft . [7] Он также доступен в виде SDK , предварительная сборка которого сделана доступной, для создания компиляторов и инструментов анализа кода с использованием инфраструктуры Phoenix.

Обзор [ править ]

Microsoft Phoenix определяет промежуточное представление (IR) для программ, используя AST , графы потока управления и модель обработки исключений. Для обработки любой программы Phoenix ее необходимо преобразовать в это представление. Также указана спецификация для этих преобразователей для конкретных типов файлов, называемых в терминологии Phoenix читателями файлов . Phoenix поставляется с программами чтения для переносимых исполняемых двоичных файлов, CIL и выходными данными внешнего интерфейса Visual C ++ . [8] Читатели для других языков могут быть написаны с использованием Phoenix SDK, хотя и отдельными инструментами, такими как lex и yacc.необходимо использовать для написания лексера и парсера соответственно.

После преобразования программы в IR инструменты анализа и оптимизации могут работать с этой формой. Феникс включает в себя выбор инструментов - в том числе блок подсчета, анализа памяти, покрытие кода , анализ кода и оптимизации . [9] Phoenix SDK также можно использовать для написания и добавления других инструментов. Генерация кода осуществляется с помощью средств записи файлов, зависящих от архитектуры (физическая архитектура процессора или архитектура виртуальной машины ) . Phoenix предоставляет бэкэнд компилятора, который он разделяет с Visual C ++, для анализа, оптимизации и генерации кода для x86.c2.dllархитектура. Писатели для других архитектур должны быть предоставлены отдельно.

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

Производство [ править ]

Компонент Phoenix (phx.dll) используется для статического анализа ( FxCop ) в Visual Studio 2010. [10] (Сам компилятор Phoenix, который требуется для работы большинства инструментальных вставок, не входит в состав Visual Studio. )

См. Также [ править ]

Ссылки [ править ]

  1. ^ "Академическая программа Феникса" . Архивировано из оригинального 13 декабря 2007 года . Проверено 16 ноября 2007 года .
  2. ^ Сафонов, Владимир О. (2010). «Microsoft Phoenix, инструменты, ориентированные на Phoenix, и наши проекты Phoenix» . Надежные компиляторы . Хобокен, Нью-Джерси: John Wiley & Sons. С. 239–276. ISBN 9780470593349. Проверено 8 мая 2019 года .
  3. ^ Тайрас, Роберт; Грей, Джефф (10 марта 2006 г.). «Обнаружение клонов на основе Phoenix с использованием деревьев суффиксов» (PDF) . Материалы 44-й ежегодной юго-восточной региональной конференции . Ассоциация вычислительной техники: 679–684 . Проверено 8 мая 2019 года .
  4. ^ Сафонов, Владимир; Грачев Михаил; Григорьев Дмитрий; Масленников, Александр (29 мая - 1 июня 2006 г.). «Aspect.NET - аспектно-ориентированный инструментарий для Microsoft.NET на основе Phoenix and Whidbey» (PDF) . .NET Технологии 2006 . Университет Западной Богемии: 19–30 . Проверено 8 мая 2019 года .
  5. ^ Ueng, Sain-Zee; Латара, Мелвин; Багсорхи, Сара С .; Хву, Вэнь-мэй В. "CUDA-Lite: снижение сложности программирования на GPU" . Языки и компиляторы для параллельных вычислений . Университет Иллинойса в Урбане-Шампейн: Спрингер: 1–15 . Проверено 8 мая 2019 года .
  6. ^ Кастро, Мигель; Коста, Мануэль; Харрис, Тим (6 ноября 2006 г.). «Защита программного обеспечения путем обеспечения целостности потока данных» (PDF) . Труды 7-го симпозиума по разработке и внедрению операционных систем . Ассоциация USENIX: 147–160 . Проверено 8 мая 2019 года .
  7. ^ [1] [2] [3] [4] [5] [6]
  8. ^ "Серверная часть компилятора Phoenix" . Архивировано из оригинального 26 декабря 2010 года . Проверено 16 ноября 2007 года .
  9. ^ "Инструменты на основе Phoenix" . Архивировано из оригинального 26 декабря 2010 года . Проверено 16 ноября 2007 года .
  10. ^ "VS 2010 Beta 2 Углубленный анализ кода на первый взгляд" . Архивировано из оригинального 6 -го января 2010 года . Проверено 30 марта 2010 года .

Внешние ссылки [ править ]

  • Официальный сайт Phoenix
  • Phoenix SDK June 2008 CTP Release (последняя версия на момент написания)