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