Gcc
在 gcc 中包含語言的標準是什麼?
根據
man gcc
,gcc 支持以下語言,您可以通過-x
flag 進行選擇: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?
基本上,必須有一個語言前端和任何必要的支持庫,獲得適當許可,質量足夠(程式碼,還有文件和測試),並且有人願意維護它。決策者是GCC 指導委員會。
在不遠的過去,有一些語言被添加和刪除的例子。D 於 2011 年成為候選人,於 2017 年獲得批准,並在 GCC 8 中可用。另一方面,Java 在經過很長時間後在 GCC 7 中被刪除。
有一些項目可以添加Python和Rust,但我認為那裡沒有太多活動。
GCC被分成多個組件;它支持的各種語言由前端實現,前端將程序轉換為中間表示形式,GIMPLE(獨立於語言和機器)。因此,優化器是跨語言共享的。