2009-07-10 7 views
4

D言語を調べているうちに、GCCのDコンパイラであるGDCを見つけました。GDCフロントエンドを中間のC/C++コードを生成するには?

http://sourceforge.net/projects/dgcc/files/

ドキュメントがほとんど存在しなかったが、それは、コマンドラインスイッチのほとんどは、GCCコンパイラと同じであったことを言った:私はここからのMinGWのバージョンをダウンロードしました。しかし、それは私が通常GCCでビルドしないので、私にはあまり役に立ちません。

GDCは「GCCフロントエンド」として記述されています。これは、ある時点で、GCCコンパイラが実際に飲み込むことができる中間的なC++やCを生成しなければならないと思うようになります。私はこれがGCCがObjective-Cプログラムをコンパイルする方法だと考えています。

私が知りたいのは、GCCに中間C/C++コードをファイルとして発行させ、GCC/MinGWで手作業で検査してコンパイルできる方法はありますか?

+0

ところで、GDCは多かれ少なかれサポートされていません。 Windowsの場合、Dの推奨コンパイラは公式のDMDです。 * nuxには、いくつかの味のためのDMDのバージョンがあります。または、LLVMベースのLDCを使用することができます:http://www.dsource.org/projects/ldc – BCS

答えて

8

フロントエンドGCCへ、次にアセンブリに直接コンパイルされる言語に依存しない表現を生成します。これは、C、C++、Obj-C、D、Fortran、Java、Adaなどのフロントエンドのケースです。中間的なCまたはC++の表現はなく、生成することもできません。

5

クイックアンサー:いいえ。

私はGCCについて知っているので、フロントエンドからバックエンドに渡される言語に依存しないコード表現にはabstract syntax treesが使用されています。理論的にはASTをC/C++コードに「逆コンパイル」することは可能かもしれませんが、AFAIK GCCスイートはこれを実装していません。

+0

OK、それはGCCです。おそらく、GDCはGCCを呼び出す独立したフロントエンドに過ぎず、出力を認識可能な形式で渡します。 (私はここに推測している。) – Buggieboy

3

基本的には、x86プラットフォームではなくターゲットプラットフォームとしてC/C++を生成するgccバックエンドが必要です。これは完全に可能ですが、私はこれを行う実装を認識していません。ところで、もし存在すれば、出力はあまり読みにくくないかもしれません。

関連する問題