🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.c
Article #451

Re: クロスコンパイラ?(

#451
From: James君
Date: Thu, 02 Apr 1998 00:00
86 lines
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-mail
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>

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