5

次を示す中間ファイルを発行するように GCC を納得させることは可能ですか?

  1. コメント
  2. 元のソース
  3. 拡張マクロ定義
  4. コンパイラによって適用される最適化
  5. アセンブリ コードに変換される結果の C または C++ コードは?

アセンブラの代わりに中間 C/C++ を見たいのですが、十分に注釈が付けられていれば、アセンブラだけを使用することもできます。

ライブラリを拡張するために、ほぼ完全にマクロで構成されたライブラリをリバース エンジニアリングしようとしています。また、コンパイラーがより多くの最適化を行う機会を与えるために、最適化の効果も確認したいと思います。(言い換えれば、以前の試みが効果的ではなかった場所を確認するため)

4

2 に答える 2

4

1と2は、元のソースに表示されています。

3 -E.

4 最適化のさまざまな段階での中間コードは、-daやさまざまな-fdump-rtl-xxx-fdump-tree-xxxおよびその他の-fdump-xxxオプションを使用して取得できます。

これらはここに文書化されています:

http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Debugging-Options.html#Debugging-Options

5 GCC がソースからソースへの変換を行うとは思わないので、結果の C++ コードは元の C++ コードです。

GCC が行う変換については、次のように説明されています。

http://gcc.gnu.org/onlinedocs/gccint/Passes.html#Passes

于 2013-10-04T20:17:38.303 に答える