Article View: fj.lang.c
Article #451Re: クロスコンパイラ?(
From: James君
Date: Thu, 02 Apr 1998 00:00
Date: Thu, 02 Apr 1998 00:00
86 lines
5162 bytes
5162 bytes
Kusakabe Youichi wrote: >=?iso-2022-jp?B?SmFtZXMbJEI3LxsoQg==?= (james@james.jp9.org) wrote: >: .OBJをコンパイラが出力するかどうかは,大した問題ではないでしょう。 >: a.outの形式やELF形式ではなくて,.oから.EXEや.COMの形式の実行ファイルを >: 作り出すリンカ,そしてDOSのシステムコールを呼び出しているライブラリが >: あれば,UNIXのコンパイラでもDOSの実行ファイルは作れますね。 > >: コンパイラが出力する.OBJや.oなどの中間形態から,別のプラットフォー >: ムで実行出来る形態を作り出す,リンカ/リンカエディタ/ローダ/リロケータ >: /コンバータなどと呼ばれるソフトウェア,そしてライブラリなどのサポート >: ファイルが違うのですね。 > >「コードジェネレイター」だけが「コンパイラー」なわけじゃあないですね。 >Parser部分があって、オプチマイザー、コードジェネレイター、PostCodeオプチマイザー >で、その環境の形式で出力する部分まであってこそコンパイラーなのでは? > >「CPU」が同じでもヴェクタープロセッサーがついているかどうか >MMUの有り無しでコードが違ってくる環境も有り得ますよね。 > >「CPUが同じで別プラットフォームの場合は、オブジェクト形式から先の話と、 > ライブラリーの差異だけ」 >というのは無茶だと思いますが。 > >CodeWarriorの68K用のをPowerMacで起動して、68K用のコードを出力した場合は? :-) >CodeWarriorの68K用のをPowerMacで起動して、PowerMac用のコードを出力した場合は? :-) > > ヘ_ヘ ________________________ >ミ・・ ミ void@merope.opus.or.jp > ( ° )~ 日下部陽一 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ コンパイラの仕事に構文解析が入るのは明らかな事です。構文解析を行わず してコード生成など出来る訳がありませんから。オプチマイザをコード生成内 部の1ステップと考えても,独立した1ステップと考えても,それはどちらで も通用する事です。実装の話,考え方の話です。この様な話は,極めて初歩的 な事項ですから,問われずに言い出す必要は無いでしょう。 今のCコンパイラは,ccやclとやれば,リンクまで自動的に行って実行形式 のファイルを作ってくれます。しかし,だからと言ってリンカまでコンパイ ラの範疇に入れてしまうのはどうでしょう。コンパイラ=開発システム,で は無いでしょう。 まさかコード生成=実行コードの出来上がりとなる様な,PIC16C用のCコン パイラ(もどき)みたいなものの話をしているのでは無いでしょうね。これは非 常に特殊なケースです。 リンカまでコンパイラの範疇に入れてしまうのであれば,.OBJ形式の中間コ ードをコンパイラが吐き出すかどうかは無意味な話でしょう。しかしそれを持 ち出して来た事は,コンパイラとリンカを関連はあるが独立したパートである と考えている証左になるでしょう。 また(中間)コード生成を行うコンパイラを,構文解析,コード生成,オプチ マイザと分離して考えるのなら,リンカも当然ながら同様に分離して考えるべ きでしょう。 MMUやベクタプロセッサを使う/使わないは,コード生成の1部分,そしてラ イブラリです。アタッチメントユニットのコードをインラインで展開する式の コンパイラが現在では主流でしょうが,しかしそれをライブラリコールとする 実装が無い訳ではありません。また,同CPUで異プラットフォームの場合,あ るいは同CPUで同OSの場合ですら,アタッチメントユニットに関連する事柄は, ライブラリの関与がある場合があります。 アタッチメントユニットに関するコード生成の制御が出来ないとすれば,そ れはどうしようもないコンパイラである,というだけの話です。これはクロス 開発の必要の有無には関係しますが,クロスコンパイラの定義とは関係ないで しょう。UNIXでDOSの実行コードを作ったと書かれていましたが,それはお持 ちだったDOSのコンパイラがNDPをサポートしなかった,という話ですか。一体 どこのコンパイラだったのでしょう。 「『CPUが同じで別プラットフォームの場合は、オブジェクト形式から先の話と、 ライブラリーの差異だけ』というのは無茶だと思いますが」,現実にその様な 事が行われていなければ,この意見は説得力を持つでしょう。 現実にその様な事が行われている,しかも開発の1スタイルとして定着して いる,となれば,それは単に事情に通じていない,と言う話です。 ですから,1ボードのクロス開発のご経験は,とお聞きしているのです。 James君
Technical Details
Message-ID:
<35239E24.67476193@james.jp9.org>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<352267BE.47C2A3D4@james.jp9.org> <1998Apr1.174046.11929@merope.opus.or.jp> <3522A395.B852A0AE@james.jp9.org> <1998Apr2.064056.4602@merope.opus.or.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 106434,c7c90e7a2a53b47f X-Google-Attributes: gid106434,public From: "James君" <james@james.jp9.org> Subject: Re: クロスコンパイラ?( Date: 1998/04/02 Message-ID: <35239E24.67476193@james.jp9.org> X-Deja-AN: 340191487 Content-Transfer-Encoding: 7bit References: <352267BE.47C2A3D4@james.jp9.org> <1998Apr1.174046.11929@merope.opus.or.jp> <3522A395.B852A0AE@james.jp9.org> <1998Apr2.064056.4602@merope.opus.or.jp> Content-Type: text/plain; charset=iso-2022-jp Organization: James君 Mime-Version: 1.0 Newsgroups: fj.lang.c