-PR-
締切済み

LinaxのCコンパイラ gcc の内部構造を教えて下さい

  • 困ってます
  • 質問No.35578
  • 閲覧数427
  • ありがとう数0
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 82% (19/23)

今、コンパイラの仕組みについて勉強しています。
gccの仕組みについていろいろ調べているのですが
なかなか資料が見当たりません。そこで是非これ
に関して情報をお持ちのかたは御提供下さい。ど
のような情報でも構いませんができれば次の情報
についてをお願いします。
1)gcc の構文解析の仕組み
2)最適化オプション -O2 を用いた時と通常のコンパイル時との構文解析の違い
3)ターゲットプロセッサ(CPU)に依存した構文解析の動作
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 37% (570/1525)

まず一般的なC/C++コンパイラの動作を理解しましょう。 1.プリプロセッサ プリプロセッサ文の解析、マクロ展開、コメント除去。 2.構文チェッカ エラーチェックとシンボルテーブル作成 3.コードジェネレータ アセンブラコードに展開 4.オプティマイザ 最適化 5.アセンブラ 機械語コードに展開 構文解析自体はオプションに関係無く同じ物が採用されます。 デバッグオプションの ...続きを読む
まず一般的なC/C++コンパイラの動作を理解しましょう。

1.プリプロセッサ
プリプロセッサ文の解析、マクロ展開、コメント除去。
2.構文チェッカ
エラーチェックとシンボルテーブル作成
3.コードジェネレータ
アセンブラコードに展開
4.オプティマイザ
最適化
5.アセンブラ
機械語コードに展開

構文解析自体はオプションに関係無く同じ物が採用されます。
デバッグオプションのときに少々違った動きをしますが。

また、gccに限らずc/c++コンパイラはunixのpcc(ポータブルCコンパイラ)の影響を色濃く受けています。
pcc系Cコンパイラの構文解析に関しては
「Cコンパイラ設計 yacc/lexの応用」(啓学出版 ISBN: 4-7665-0266-3 )に解説があります。

-Oオプションによるコンパイラの動作の違いはオプティマイザの動作の違いにほかなりません。
クロスコンパイルはコードジェネレータが変わるだけです。
ただし、最適化はCPUに依存しますのでこの2つは密接に関連します。

詳しくはgccのソースコードを読めばわかると思いますが…
関連するQ&A


このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ