将一种语言纳入 gcc 的标准是什么?

将一种语言纳入 gcc 的标准是什么?

根据man gcc,gcc 支持以下语言,您可以使用标志进行选择-x

c  c-header  cpp-output
c++  c++-header  c++-cpp-output
objective-c  objective-c-header  objective-c-cpp-output
objective-c++ objective-c++-header objective-c++-cpp-output
assembler  assembler-with-cpp
ada
f77  f77-cpp-input f95  f95-cpp-input
go
java

将一种语言放入 gcc 的标准是什么?显然,像 C 和 C++ 这样的语言将会出现在 gcc 中,但我对 go 和 java 感到惊讶。

此外,gnu.org 上的 gcc 文档:“GCC 与语言无关的组件包括大多数优化器,以及为各种处理器生成机器代码的“后端”。”我对编译器的了解充其量只是基础知识,但这是否意味着 gcc 将每种语言解析并词法为某种通用格式,然后从那里生成某种二进制文件?如果是这种情况,编写一个独立于语言的 gcc 优化器是否适用于任何这些语言,例如 C 和 go?

答案1

基本上,必须有一个语言前端和任何必要的支持库,获得适当的许可,具有足够的质量(代码,还有文档和测试),并且人们愿意维护它。决策者是海湾合作委员会指导委员会

在不久的将来就有一些语言被添加和删除的例子。D 2011年成为候选人,2017年获批并且在 GCC 8 中可用。另一方面,Java 在沉寂很长时间后在 GCC 7 中被删除。

有项目需要添加Python但我认为那里没有太多活动。

海湾合作委员会是分成多个组件;它支持的各种语言由前端实现,前端将程序转换为中间表示,吉普勒(与语言和机器无关)。因此,优化器可以跨语言共享。

相关内容