Компиляторы C ++ и задние / передние части - PullRequest
21 голосов
/ 12 апреля 2010

Для моего собственного образования мне любопытно, какие компиляторы используют, какой интерфейс C ++ и back-end. Не могли бы вы рассказать мне, где используются следующие технологии и какие отличительные признаки / преимущества у них есть?

  • Open64 - это back-end, front-end или оба? Какие компиляторы его используют? Я сталкиваюсь с этим в компиляторе CUDA.

  • EDG - насколько я могу судить, это интерфейсное использование компиляторами Intel и Comeau. другие компиляторы используют это? Я нашел довольно много ссылок на это в исходном коде boost.

  • ANTLR - это общий парсер. Используют ли его какие-либо распространенные компиляторы?

Относительно компиляторов:

  • с front-end / back-end используется набор компиляторов gcc? у него есть общее наследие с любым другим компилятором?

  • какие используются компиляторы интерфейсных программ PGI и PathScale?

  • что использует интерфейсный / фоновый XL-компилятор (предложение IBM).

подробные ссылки в Интернете или ваше личное ноу-хау было бы здорово. Я провел поиск в Google, но информация, с которой я обычно сталкивался, была довольно поверхностной.

Спасибо.

Ответы [ 4 ]

11 голосов
/ 12 апреля 2010

EDG - это интерфейс, используемый Intel и Comeau. См. Список EDG клиентов для других пользователей.

ANTLR - генератор синтаксических анализаторов. Я не знаю ни одного компилятора C ++, созданного на основе синтаксического анализатора, созданного с помощью ANTLR (хотя это не значит, что он не может существовать).

GCC - это набор компиляторов с внешними интерфейсами для C, C ++, Fortran, Ada, Java и т. Д., И внутренними компонентами для большего числа процессоров, чем мне хотелось бы думать.

Open64 также представляет собой набор компиляторов, включающий в себя несколько внешних интерфейсов (для C, C ++, Fortran и, возможно, других, которые я не помню в данный момент) и внутренних компонентов (ориентированных на X64, Itanium, ARM и, опять же, , вероятно, другие, которых я не помню и / или не знаю). Я полагаю, что его источником (каламбур отмечен как не предназначенный) является компилятор (ы) SGI. Кажется, я помню, что читал что-то, намекающее на то, что Open64 был получен из некоторой версии внешнего интерфейса (ов) GCC, но я не знаю, как это происходит: 1) насколько он похож на GCC внутри, или 2) версии GCC, из которой он производные - но это было достаточно долго, так что я думаю, что это был GCC 3.x в самый последний раз, и вполне возможно, GCC 2.x.

Я считаю, что PathScale создал по крайней мере один компилятор, производный от Open64, но они могут иметь и другие.

Насколько я знаю, компилятор IBM - полностью их собственное творение. Я бы догадался IBM (сейчас прекращено) VisualAge для C ++ поделился некоторым наследием / разработкой / кодом с XL C ++, но точно не знаю, и даже не могу начать угадать по степени, даже если предположить, что это правда.

8 голосов
/ 12 апреля 2010

Проект Clang предоставляет новые внешние интерфейсы для C / C ++ / Objective C поверх базового LLVM . Проект LLVM также предоставляет LLVM-gcc с использованием внешнего интерфейса GCC и внутреннего интерфейса LLVM. Проект DragonEgg стремится заменить серверную часть GCC на LLVM.

Компиляторы Codeplay VectorC, Sieve и Offload используют пользовательский интерфейс и серверную часть

7 голосов
/ 12 апреля 2010

с front-end / backend использует набор компиляторов gcc? у него есть общее наследие с любым другим компилятором?

Аббревиатура «GCC» расшифровывается как «коллекция компиляторов GNU» (первоначально «компилятор GNU C»), и это уже дает подсказку: компиляторы GNU представляют собой коллекцию компиляторов, особенно для C и C ++ но также и для Fortran, Objective-C и других. Они имеют общее внутреннее и промежуточное представление, разработанное специально для GCC.

Все интерфейсы специально написаны для GCC. Некоторые из них были предоставлены третьими сторонами, прежде всего интерфейс Objective-C, предоставленный Apple.

5 голосов
/ 12 апреля 2010

Visual studio использует EDG для своей машины intellisense.

...