• ベストアンサー

コンパイラツールのについて

コンパイラについて学習しております。 そこで、ある程度の概要がわかるぐらい勉強するために何かよい方法はございますでしょうか? それと質問なのですが、コンパイラ・ドライバとは、デバイス・ドライバと同じ意味合いでとっていいのでしょうか? 私が調べたかぎりでは、違うような気がしまして。 それというのも、コンパイラ・ドライバはオプションや内部的なフェーズとのつながりしか記述されてあります。他の環境(?)との仲介みたいなことはしないのでしょうか? 質問がわかりずらい場合は、申し訳ありません。 まだ、勉強中の為お許しください。 どうそ、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 100Gold
  • ベストアンサー率27% (284/1018)
回答No.1

コンパイラはアセンブラやリンカなどのプログラムの集合です。内部ではlnコマンドやasコマンドなどを使用してコンパイルを行っています。それらを統合するプログラム(gccやccなど)をコンパイルドライバといいます。 コンパイラに付いての学習ということですが、c言語およびUNIXの仕組み、gccの使用法を学習したあとにlex、yaccに付いて学習するとよいと思います。

2002hare
質問者

お礼

どうもありがとうございます。 レスがとても早かったので、助かりました。 納得しました。結構やること多いですね、負けずに頑張っていきたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • nagare
  • ベストアンサー率33% (280/831)
回答No.2

>コンパイラ・ドライバとは、デバイス・ドライバと同じ意味合いでとっていいのでしょうか? 違います コンパイラ・ドライバは、 ・コンパイル ・アセンブル ・リンク を制御するプログラム http://www.geocities.co.jp/SiliconValley-Oakland/1680/rakup/rakup03.html デバイスドライバ(ドライバ)は、 周辺機器を動作させるためのソフトウェア。 http://e-words.jp/w/E38389E383A9E382A4E38390.html >コンパイラ・ドライバはオプションや内部的なフェーズとのつながりしか記述されてあります。他の環境(?)との仲介みたいなことはしないのでしょうか? そうです コンパイラ・ドライバはコンパイル~リンクに関することしかせません

2002hare
質問者

お礼

お礼が遅くなって申し訳ありません。 質問した内容がわかりにくかったと思いますが 適切な回答をいただけ、うれしく思います。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 最適化コンパイラについて

    約3年前に「Visual C++.net Standard Version 2003 アカデミックパック版」 を買ったのですが、ビルドログを見てみると、 「Visual C++ エディションはコンパイラの最適化をサポートしていません。」 と出力されており、自分で調べてみたんですが、 どうやら、この開発環境には「最適化コンパイラ」が付いてないようです。 そこで質問なんですが、 1)最適化コンパイラの有無で何か影響するものはあるのでしょうか?   できれば詳しく教えてください。 2)プログラムの学習が進むにつれて、将来、最適化コンパイラ付きの開発環境に   買い換えなければならなくなるのでしょうか? 最適化コンパイラについて知識のある方、教えていただけないでしょうか?

  • ALGOL・PL/Iのフリーのコンパイラ、学習向けサイトを教えて下さい

    ALGOL・PL/Iのフリーのコンパイラ、学習向けサイトを教えて下さい。 はじめまして。よろしくお願いします。 ALGOL・PL/Iのフリーのコンパイラ、学習向けサイトを教えて下さい。 現在、仕事の都合でPL/Iのを勉強しています。 PL/IはCOBOL・FORTRAN・ALGOLを組み合わせたものということで、3つの言語も勉強しています。 ネットで探したところ、COBOL・FORTRANはコンパイラと学習向けサイトがありましたが、PL/I・ALGOLは芳しい情報はありませんでした。(IBMのPL/Iのマニュアルくらいでした…。) コンパイラについては、Windows環境(Windows XP)、Linux環境(fedora10)どちらでもいいです。 どうか宜しくお願いします。

  • C言語コンパイラに関して

    C言語の初心者です。 #1年くらいは触れているのですが。。 今までは、UNIX上(実際にはwindows上のcygwinですが。。)にてgccコンパイラにていろいろとやってきたのですが、そろそろWindowsプログラミングにチャレンジしてみたいと思っております。 そこで、現在チャレンジするにあたっての環境を構築しようと思っているのですが、windowsプログラミングにおける最適な?コンパイラは何になるのでしょうか?といっても各々長所・短所があって、質問がおかしいとおもっているのですが、実際のところVC++か、Borland Bccの2種類を考えております。とっつきやすい方?はどちらになりますでしょうか?ご意見を頂けると幸いです。また、学習するにあたって、お勧めのサイト等ございましたら、あわせてご教授お願い致します。 初心者で的外れな質問かと思いますが、どうかご教授・ご指導宜しくお願い致します。

  • コンパイラの制限 : ヒープの領域を使い果たしました

    最近、標準C++の勉強を始めたばかりなのですが、以前にC++で書いたプログラムのヘッダを標準C++に変更して(例えば、#include<iostream.h>を#include<iostream>に変える)コンパイルしたところ、 「コンパイラの制限 : ヒープの領域を使い果たしました; 上限を設定するために /Zm オプションを使用してください。」とのエラーがでました。このエラーは以前は出なかったもので、以前も今回もコンパイラーはVC++6.0です。なぜ、ヘッダを変えただけでこのようなエラーが出たのでしょうか。漠然とした質問で答えようがないかもしれませんが、ご存知の方いらっしゃったら教えてください。お願いします。

  • Windowsデバイスドライバ開発の学習について

    Windowsデバイスドライバ開発の学習について 私は仕事でWindowsアプリケーションの開発をしております。 マネージ/アンマネージドアプリケーションの開発に必要な基礎知識は一通り身につけているつもりですが、デバイスドライバ開発に関する知識がありません。 いまのところ特に仕事などでデバイスドライバ開発が必要というわけではないのですが、もっとWindowsの内部を詳しく勉強したいと思っており、現在はデバイスドライバに興味を持っています。 現在の主流のドライバモデルとしては、従来のWDMと、新しいWDFがあることがわかりました。WDMは複雑でWDFのほうが入門しやすいとのことですが、どれから勉強していくのがよいでしょうか。WDFを先に勉強して、あとからWDMを勉強するという順番はありでしょうか。 また、おすすめの書籍やサイトなどがあれば教えてください(英語でも可)。

  • クラスを使ったC++の関数をCで呼び出すには?

     QNo.152285と類似の質問になりますが、独自に用意したクラスを内部で使用し、extern "C" を宣言した、C++の関数をCプログラムから呼び出し、Cコンパイラでリンクすることを考えています。  この場合、C++関数内で使用されるクラスについても、extern "C"の記述が必要でしょうか?  またその記述の仕方はどのようになるでしょうか?  あるいは、そういったことはできないのでしょうか?(coutが使えることを考えると、できないわけではないとも思っていますが)  あるいは、コンパイルの際の、オプションなどで解決できるでしょうか?  クラスはnewで生成して使用しています。 環境はソラリスのCCとccを使っています。 どうか、ご回答よろしくお願いします。

  • VC++の/Zm オプションについて

    仕事でVC++で開発されたソフトに機能追加をしています。 環境はVisualC++6.0(SP3)&Win2Kです。 何年か前に開発されて他の人がやってたものを今回引き継ぎました。 SDKで開発しているソフトなのですが、グローバル変数が かなり多いです。おそらくそれが原因と思われますが、 今回の機能追加の途中でビルド時にエラーが出るように なりました。 (致命的なエラー C1076 コンパイラの制限 : 内部ヒープ領域の上限に達しました。領域を広げるには、/Zm オプションを使ってください。) 調べてみたところ、/Zm コンパイラオプションで コンパイラのメモリ アロケーションの領域を設定するとよいみたいでした。 ひとまず/Zmが150になっていたものを160に設定してビルドは通るようになりましたが、気がかりな点があります。 コンパイラオプションを変えることによって、何か弊害が でることはあるのでしょうか。 今回のコンパイラオプションを変えたことが原因で不具合があってはと思いまして・・・ VC++初心者なのですごく初歩的な質問をしているかもしれません。どなたか教えてください。

  • どのコンパイラが私に適しているのしょう?

    時代遅れ、勉強不足とのお叱りを覚悟の上で質問します.                私は、フォートランで育って、その後、不承不承ながら ANSI のC言語へ移行した化石世代です.現役を退いてからは、もちろんもうメイン・フレームは使えません.当然、パソコンへ切り替えることとなりました. コンパイラとしては、値段の点でマイクロソフトのQuick-Cを愛用しました. また、知人から富士通のF-Basic (コンパイラーです.インタプリタではありません) を紹介されました.電子回路のネットワークの解析に使ってみたらもってこいのソフトでした.とは言うものの、いつの間にかパソコンとは縁が遠くなりました.                                 最近になって、またパソコンの虫がうずき始めました.年のせいで物忘れを強く意識するこのごろです.老化防止の一助として,なにかを始めねばと考えたわけです.しかし、なにをやったらいいのかわかりません.手当たり次第に、アマゾンから C++、C#、Visual Basic の参考書を買い込みました.  老化した頭には、あのややこしい IDE の操作を理解するのは一仕事でした.しかし 一度 IDE を飲み込んでしまうと、あとは昔とほとんど変わりません.楽しくプログラミングが出来るようになりました. 別に深い意味はありませんが、「パソコン、ディスプレイに表示」が先入観となったのでしょう. Visual Basic を主に使っています. 随分と便利な点もあるようです. ラジオボタンとか、グループボックスなど、以前ならわざわざサブルーティンを作成していた手間がなくなりました.                      ただ困ったこともいくつかあるようです.例えば、初期データの入力に手間がかかります.また、計算結果をディスプレイ上に表示する時もそうです. 例えば、次のように表示したい場合です.    -------------------------- .......No.........Impedance................Susceptance ......... 1........ 150.00 + j.0.00...........6.67 + J.0.00 ......... 2..........97.66 + j65.11...........7.03 - j.4.73 ......... 3........ .50.00 + j57.74..........12.00 - j16.00        --------------------------------------------------- 単純に四捨五入だけなら、Math.Floor(……+0.5)……で済みますが、これでは、少数点の位置が揃いません. Sub.を一つ作れば良いと言えばそれまでですが、昔の Format F6.2 とか、Printf 6.2d が懐かしくなりました. 勉強不足とお叱りを受けるかもしれませんが、どうもこのコンパイラは理工系の数値計算にはあまり向いていないような気もします.この考えは間違っているのでしょうか. それとも、C++か、C# を使うべきなのでしょうか.いっそ、昔のANSIのCを使って、C++でコンパイルしようかとも考えています. 私のやりたい計算は、電子回路の回路網のレスポンスの検討です.いったい、どのコンパイラを使うのがいちばん便利なのでしょう?  また、Visual Basic は、こんな用途には不向きなのでしょうか? どなたか、この辺の事情を教えていただけませんでしょうか.「認識不足だ.その考えは間違ってるよ」とお叱りは覚悟しています. なんとか頭脳の老化をすこしでも食い止めたいとの老人のはかない希望を汲んで、お力添えをお願いします. 忌憚のないご意見をお待ちします. よろしくお願いします. 使用している環境は次のとおりです. NEC ValueStar CPU Pentium Memory 2GB HDD 250GB X 2

  • BCB5 「コンパイラ内部エラー」の回避方法

    Borland C++ Builder5 を使っています。 WindowsXP Pro SP2の環境です。 ダイアログを表示するプログラムを作ろうとすると、コンパイルエラーになります。 この回避方法をお教え下さい。 親Form1のメニューを選択した時に OptionDlg->ShowModal(); で表示しようとしています。 OptionDlgは、「ファイル-新規-ダイアログ」で作ったダイアログです。 ダイアログのNameプロパティに「OptionDlg」と指定し、ソースはOptionDlgu.cppで 登録しました。 親Formで、ヘッダーファイルの追加もしています。 このような状態でコンパイルすると、 sysutils.hpp( ):F1004コンパイラ内部のエラー というメッセージが出て、コンパイル出来ません。 上記の方法で、ダイアログを表示するだけのサンプルプログラムを作ると、 正常にコンパイル出来ます。 初心者の私には、sysutils.hppが何を記述している部分なのか理解出来ていない のですが、今までにも同様の手順でダイアログを出すプログラムを作っていて、 何も問題なかったので、途方に暮れています。

  • スモールコンパイラの制作という参考書について

     現在大学で, 「スモールコンパイラの制作で学ぶプログラムのしくみ」という参考書を勉強しているのですが, 出題された課題の中でどうしても解らない問題があるのです.上記の参考書を学習した方だけではなく, 幅広い方からご教授を頂きたいと思っておりますので何卒宜しくお願いいたします.  課題の内容は, (1) 関数の引数として 1 次元配列を渡せるように機能拡張せよ.   渡し方は C言語の方法に習え.すなわち, 配列の要素全体のコピーを渡すのではなく, 配列の先頭の番地を渡せ.以下のプログラム ( 配列の要素の和と配列のコピー ) で動作を確認せよ.    I sum(aI a[], I n){ vI s = 0, i; for(i = 0; i < n; i = i+1;){ s = s + a[i]; } return s; } aI a[16]; for(i = 0; i < 16; i = i+1;){ a[i] = i * i; } println sum(a, 16); }$  { I copy(aI a[], aI b[], I n){ vI i; for(i = 0; i < n; i = i+1;){ b[i] = a[i]; } return 0; } vI i; aI a[16], b[16]; for(i = 0; i < 16; i = i+1;){ a[i] = i; } dummy = copy(a, b, 16); for(i = 0; i < 16; i = i+1;){ println b[i]; } }$  用いるコンパイラは Java 言語で記述されており, ソースファイルは, http://book.gihyo.co.jp/s-com/ から取得できるようになっております.宜しくお願いいたします.

専門家に質問してみよう