Подтвердить что ты не робот

Компиляторы С++ и обратные/передние концы

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

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

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

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

Что касается компиляторов:

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

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

  • какой внешний компилятор XLR использует (предложение IBM).

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

Спасибо.

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

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