对于我自己的教育,我很好奇编译器使用哪个C ++前端和后端。 您能否告诉我使用以下技术的地方以及它们具有哪些标志/优势?
Open64 - 它是后端,前端还是两者兼而有之?哪些编译器使用它?我在CUDA编译器中遇到过它。
EDG - 据我所知,这是英特尔编译器和Comeau的前端使用。其他编译器使用它吗?我在boost源代码中找到了很多引用。
ANTLR - 这是一般解析器。有没有常见的编译器使用它?
关于编译器:
gcc编译器套件是否使用?它与其他编译器有共同的遗产吗?
前端/后端PGI和PathScale编译器使用的是什么?
前端/后端XL编译器使用的(IBM产品)。
互联网上的深入链接或您的个人技术诀窍会很棒。 我做了一些谷歌搜索,但我通常遇到的信息相当肤浅。
感谢。
答案 0 :(得分:11)
EDG是Intel和Comeau使用的前端。有关其他用户,请参阅EDG的customers列表。
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 ++共享一些遗产/开发/代码,但不确定,但不能甚至开始猜测它的程度,即使它是真的。
答案 1 :(得分:7)
Clang项目在LLVM后端之上为C / C ++ / Objective C提供了新的前端。 LLVM项目还使用GCC前端和LLVM后端提供LLVM-gcc。 DragonEgg项目试图用LLVM替换GCC后端。
Codeplay VectorC,Sieve和Offload编译器使用自定义前端和后端
答案 2 :(得分:6)
前端/后端gcc编译器套件使用?它与其他编译器有共同的遗产吗?
首字母缩略词“GCC”代表“GNU编译器集合”(最初是“GNU C编译器”),这已经给出了一个提示:GNU编译器是编译器的集合,最着名的是C和C ++也适用于Fortran,Objective-C等。它们共享一个专门为GCC开发的后端和中间表示。
前端都是为GCC定制的。有些是由第三方提供的,最着名的是Objective-C前端,由Apple提供。
答案 3 :(得分:5)
Visual Studio uses EDG用于其智能感知引擎。