23

对于我自己的教育,我很好奇编译器使用哪个 C++ 前端和后端。您能否告诉我以下技术在哪里使用以及它们有哪些标志/优势(如果有)?

  • Open64 - 它是后端、前端还是两者兼而有之?哪些编译器使用它?我在 CUDA 编译器中遇到它。

  • EDG - 据我所知,这是英特尔编译器和 Comeau 的前端使用。其他编译器使用它吗?我在 boost 源代码中发现了很多对它的引用。

  • ANTLR - 这是通用解析器。有没有常见的编译器使用它?

关于编译器:

  • gcc 编译器套件使用前端/后端吗?它与任何其他编译器有共同的传统吗?

  • 前端/后端 PGI 和 PathScale 编译器使用什么?

  • 前端/后端 XL 编译器使用什么(IBM 产品)。

Internet 上的深度链接或您的个人知识将非常有用。我做了一些谷歌搜索,但我一般遇到的信息都比较肤浅。

谢谢。

4

4 回答 4

13

EDG 是 Intel 和 Comeau 使用的前端。请参阅 EDG 的其他用户的客户列表。

ANTLR 是一个解析器生成器。我不知道任何围绕使用 ANTLR 构建的解析器构建的 C++ 编译器(但这并不意味着它不存在)。

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 for C++与 XL C++ 共享了一些遗产/开发/代码,但不确定,甚至无法开始猜测它的程度,即使假设它是真的.

于 2010-04-11T20:34:34.350 回答
8

Clang项目在LLVM后端之上为 C/C++/Objective C 提供了新的前端。LLVM 项目还提供了一个 LLVM-gcc,使用 GCC 前端和 LLVM 后端。DragonEgg项目试图用 LLVM 替换 GCC 后端

Codeplay VectorC、Sieve 和Offload编译器使用自定义前端和后端

于 2010-04-11T20:28:29.387 回答
7

gcc 编译器套件使用前端/后端吗?它与任何其他编译器有共同的传统吗?

首字母缩略词“GCC”代表“GNU 编译器集合”(最初是“GNU C 编译器”),这已经给出了一个提示:GNU 编译器是编译器的集合,最显着的是 C 和 C++,但也适用于 Fortran、Objective-C 和其他。它们共享专门为 GCC 开发的通用后端和中间表示。

前端都是为 GCC 定制的。其中一些是由第三方贡献的,最著名的是由 Apple 贡献的 Objective-C 前端。

于 2010-04-11T20:16:29.130 回答
5

Visual Studio将 EDG用于其智能感知引擎。

于 2010-04-11T20:33:19.023 回答