これがこのようなものにとって適切な場所かどうかはわかりませんが、GCC フロントエンド/バックエンド アーキテクチャのいくつかの側面に興味があります。
- C コードからファイルをコンパイルして C++ コードにリンクできることは知って
.o
いますが、その逆もできると思います。2 つの言語が似ているため、または GCC バックエンドが実際に言語に依存しないため、これは機能しますか? これは ADA コードでも機能しますか? (私はADAを知らないか、「機能」さえ持っているかどうかさえわからないので、それが意味があるかどうかさえわかりませんが、質問は理解されています。意味がない場合は、「パスカル」または「私のカスタム」と考えてください言語フロントエンド」) - ガベージコレクションはどこに実装されますか? たとえば、Java フロントエンドです。私が理解している方法では、JVM バックエンドにコンパイルする場合、「プラットフォーム」が GC を処理するため、フロントエンドはそれについて何もする必要はありませんが、ネイティブ コードにコンパイルする場合、フロントエンドはガベージ コレクションの GENERIC コードをバックエンドに送信するか、バックエンドにガベージ コレクションのコードを生成するように指示するフラグをオンにしますか? 最初のほうが理にかなっていますが、それはフロントエンドがターゲットに基づいて異なる出力を生成することを意味し、GCC のフロントエンド/バックエンド アーキテクチャのポイントを見逃しているようです。
- 言語固有のライブラリはどこに行きますか? たとえば、標準 Java クラスまたは標準 C ヘッダーです。それらが最後にリンクされている場合、C プログラムは理論的に Java ライブラリまたはそのようなものから関数を呼び出すことができますか?