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

このQ&Aに関連する最新のQ&A

A 回答 (1件)

まず一般的な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のソースコードを読めばわかると思いますが…
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q人感センサーの仕組み構造を教えてください。

人感センサーの仕組み構造を教えてください。

Aベストアンサー

以下の2つの方式があります。
・焦電センサー
  人などが発する遠赤外線を検出する
   なので、全身黒尽くめにすると、反応しない場合がある。
  現在、主流の方式
・ドップラーセンサー
  電波を発射し、反射して帰ってくる電波は、
  反射した物体が動いている時は、周波数がずれるので、
  ズレによって、何か(主に人)が居ると検出する。
 大昔の自動ドアは、この方式が多かった。
 自動ドアに向かって歩いてくる(動いている)人を検出する。
  だから、一旦開いてもドアの前で、立ち止まって身動きしないとドアは閉まったままになる。
 同じ原理を使ったものが、警察のレーダー速度取締り装置。
 先の、周波数のズレは、動いているものの速度に比例するので速度がわかる。
 レーダー探知機は、コンビニなどの自動ドアにも反応してしまった。

QWindows Media Player で「取り込み」のタブが見当た

Windows Media Player で「取り込み」のタブが見当たりません。WMPのバージョンを確認してから質問しようと思ったのですが、メニューバーも見当たらないため、「ヘルプ」からバージョン情報も確認できません。(比較的新しいPC=Windows 7に付いていたものなので、わりと新しいものだとは思います。)タブとしては、右上に「再生」「書き込み」「同期」があるのみです。取り込みをしたいのですが、方法が分かりません。よろしくお願いします。

Aベストアンサー

メニューバーは「Ctrlキー」と「Mキー」の同時押しでも表示できます
ちなみにバージョンは12になります
ANo.1さんが云いたいのは「再生ボタンの左右にある何もないところで右クリック」ですね

自動取り込みは不便なこともあるのでオススメしません
音楽CDをドライブに入れ、再生画面に変わると「取り込みタブ」や設定が出てきますよ。

Q耐震・免震・制震構造の仕組みを撮影したい

東京、又はその近辺で、耐震・免震・制震構造の仕組みを撮影したいのですが、どこか良いところはありますか。

Aベストアンサー

イベントならいかがでしょう?

メーカーさんのブースに行って撮影を許可してもらえれば大丈夫かと。

近いスケジュールなら「住まいの耐震博覧会2012」が東京ビッグサイトで2012年3月31日(土)・4月1日(日)東1~3ホールで開催されます。入場は無料。

ただ震災後で注目が集まっている時期ですから混雑はある程度覚悟がいるかも。撮影するにも手早く済ませないといけないかもしれませんね。実施されるかわかりませんが、メーカーによっては実演コーナーもあるようです。

参考URL:http://www.nicefair.com/index.html

QCコンパイラについて

最近C言語を始めてみようとしたのですが、いいコンパイラが見つかりません。
フリーのコンパイラでそのコンパイラのインストール方法の二つを教えてください。

Aベストアンサー

Watcom C/C++
はどうですか。
http://www.toyama-cmt.ac.jp/~mkawai/almanac/nadown/watcom/c/watcomc.html
にインストールの仕方が書いてあります。
Watcomは元はカナダにあった会社で、最適化にすぐれ、タイトで高速な
実行ファイルを作成するので有名でした。
現在でも、CPUの種類による最適化のオプションが可能です。
高速で、メモリー使用量のすくない実行ファイルを望むかたには、
お勧めできます。
もちろん、初心者にもお勧めできます。
グラフィックユーザーインターフェースも充実していると思います。

QJR電車のエアサスペンションの構造と仕組み

JR電車のエアサスペンションの構造と仕組みを教えて下さい
JR新幹線や特急を除く電車のエアサスペンションはどの様な構造でどの様に動くのでしょうか
1.エアサスペンションはボディを水平に保つ様に動くのでしょうか
2.カーブでの横Gが発生した時の動作はどの様になるのでしょうか
3.横Gには効果は無いのでしょうか

Aベストアンサー

新幹線が主ですが通勤電車型も紹介しています。
高さ調整はありますが水平に保つのではないようです。
横Gについては分かりません。

参考URL:http://www1.odn.ne.jp/~aaa81350/kaisetu/truck/truck.htm

Qlinuxへfujitsuコンパイラのインストール方法

 linux(redhat7.3)のPCに対して、fujitsuの『Fortran & C Package Family Version 5』というコンパイラをインストールしたのですが、いざfrtでコンパイルしても、a.outを使うことができません。
 ./a.out: error while loading shared libraries: libfj9i6.so.1:cannot open shared object file:Nosuch file or directory
と出てしまいます。
 インストールは説明書通りに行い、デフォルトの/usr以下に保存しました。また、/FFC/binの中のfrtはリンクを作って/usr/binの中に入れてあります。
 上記の方法では何か足りないのでしょうか。初心者ですので簡単な質問をしてしまっているのかもしれませんが、どうかよろしくお願いいたします。

Aベストアンサー

このエラーは共有ライブラリ(実行時にリンクされるもの)である libfj9i6.so.1 が見つからないと言っています。

- ひょっとしてコンパイルしたマシンと実行するマシンが違いませんか?

この場合、解決方法は2つあって、実行マシンにも Fujitsu コンパイラをインストールする、あるいは、静的リンク(必要なライブラリはコンパイル時に全てリンクしておく)でコンパイルすることです。前者の場合、次の項目も関係ありますので読んでください。後者の場合は、多分コンパイルのオプションとして -static とかいう指定をすればいいはずです。正確にはマニュアルを調べてください。

- あるいは LD_LIBRARY_PATH 環境変数が正しく設定されていないため、共有ライブラリが見つからない

これは LD_LIBRARY_PATH 環境変数を正しく設定するしか解決方法はありません。ユーザの環境変数を正しく設定するよう、マニュアルに記述があると思いますので、それに従ってください。

Qプリンターの仕組みや構造を解説してるサイトを教えて

会社で使用してるプリンターがときどき紙詰まりなどを起こします。周りの人がいつも直そうとするんですけど、私から見ると、よくわからずにとりあえずいろいろいじってるような気がします。できれば仕組みを理解してきちんと直せるようになりたいので、プリンター(会社で使うような大きいやつにも通用するような)の仕組みや構造を解説しているサイトを教えてください。(探したのですがなかなかよいサイトが見つからなかったので質問しました。)

Aベストアンサー

プリンタの修理屋です。

まず、取説を良く見ることです。
ユーザーレベルで対応できることは全て書かれているはずで、そこに書かれていないことは、してはいけないことなのです。
また、機種によって原理は一緒でも構造が異なり、安直に構造を説明できないという事情もあります。

「会社で使用してるプリンター・・・」「よくわからずにとりあえずいろいろいじってるような・・・」ということで大きな複合機を想像しましたが、こういった機械の場合は保守契約に入っているケースもありますので、サービスマンが来たときにレクチャーしてもらうのもいいでしょう。


普通のインクジェットプリンタとか、デスクトップに乗る程度のレーザープリンタでは、質問のような悩みも少ないとは思います。

いずれにしても、取説を読み直すのは重要です。

QHL-DT-ST GCC-4160Nのファームウェア

HL-DT-ST RW/DVD GCC-4160N 0010 というドライブのファームアップグレードをしたいのですが、まったくわからないので
どうしたらいいか教えてください

Aベストアンサー

http://www.hlds.co.jp/j_HLDS/faq.jsp#4

日立LGの製品は、ファームのアップデートのサポートまでしていないので、そのドライブを採用しているメーカーが公開していない限りファームを更新できないようです。
PCやそのドライブを販売しているメーカーのHP等を探してみては?
なければ諦めてください・・・

Q映写機の構造と仕組みを教えて

簡単なようで簡単ではないような構造ですね。フイルムが止まっている瞬間だけシャッターを開き、フイルムが移動中に閉じる仕組みが良く理解できません。説明図面付きのサイトを教えて下さい。宜しくお願いします。

Aベストアンサー

これでわかりますかね。
カムの部分が分かりにくいですが。
ピンがフイルムの穴に対して楕円(長方形)に近い運動をしてフイルムを引き下げます。
ピンの描く面とフイルムは直角です。
昔映写機を扱っていた頃の淡い記憶ですが。

参考URL:http://www.narishi.com/~nari-hrt/syumi/teresine/kam-kaiten.html

QC言語を学ぶのに適したコンパイラ

プログラミングをやってみようと思うのですが、英語のページなどでコンパイラのダウンロード方法がわかりにくいのです。
どのコンパイラをどのようにダウンロードすればいいのですか?

Aベストアンサー

以前見たBirdportという解説ページがかなり馴染みやすく、あそこの説明を読みながらBorland C++を入手、利用するのが良いんじゃないかな、と思ったんですが…移転などでちょっと調べるのが難航しましたね。

運良く突き止めましたので、参考までに。

Birdportのコンテンツは現在、次のサイトの中で公開されています。
http://www.parof.jp/

『2. Programing ~プログラミングの部屋~』以下にC言語関連の各コンテンツへのリンクがあります。

なお、あちらのサイトにあるBorland C++の入手先、および日本語によるFAQのURLも変更されている模様です。次のURLにアクセスしてみてください。

http://www.codegear.com/jp/downloads/free/cppbuilder
("Borland C++Compiler / Turbo Debugger"と書かれたリンクから、所定のフォームに個人情報を入力、送信する必要があるみたいです)
http://dn.codegear.com/jp/article/33545

個人情報入力に抵抗があるなら、ボーランドがごく最近公開した新しい Turbo C++ Explorerを窓の杜からダウンロード出来ます。
http://www.forest.impress.co.jp/lib/stdy/program/progdevenv/turboexplor.html

以前見たBirdportという解説ページがかなり馴染みやすく、あそこの説明を読みながらBorland C++を入手、利用するのが良いんじゃないかな、と思ったんですが…移転などでちょっと調べるのが難航しましたね。

運良く突き止めましたので、参考までに。

Birdportのコンテンツは現在、次のサイトの中で公開されています。
http://www.parof.jp/

『2. Programing ~プログラミングの部屋~』以下にC言語関連の各コンテンツへのリンクがあります。

なお、あちらのサイトにあるBorland C++の入手先、および日...続きを読む


人気Q&Aランキング

おすすめ情報