タイトルはそれをすべて言うと思います:)
GCCがAT&T / GAS構文を使用する特別な実用的な理由はありますか?
注:これは単なるデフォルトであり、切り替えることができます
注2:個人的には「インテルの構文」の方がずっと読みやすいと思うので、驚いたのはこのためです。
why gcc uses at&t
)、その質問はしません。
タイトルはそれをすべて言うと思います:)
GCCがAT&T / GAS構文を使用する特別な実用的な理由はありますか?
注:これは単なるデフォルトであり、切り替えることができます
注2:個人的には「インテルの構文」の方がずっと読みやすいと思うので、驚いたのはこのためです。
why gcc uses at&t
)、その質問はしません。
回答:
GCCはAT&T構文をデフォルトで使用します。これは、もともとAT&T System V(現在はUNIXと呼ばれます)を使用するシステム、またはSystem Vによく似た構文を持つシステムで記述されているためです。
GNUオペレーティングシステムをブートストラップするために、Richard Stallmanはアムステルダムコンパイラキット(Free University Compiler Kitとしても知られています)の作者であるAndrew S. Tanenbaumに、GNUにそのソフトウェアを使用できるかどうか尋ねました。タネンバウムがフリー大学は自由だったがコンパイラはそうではなかったと彼に言ったとき、ストールマンは彼自身で書くことにしました。ストールマンの当初の計画は、Len Towerなどの支援を得て、Lawrence Livermore Laboratoryの既存のコンパイラをパステルからCに書き直すことでした。ストールマンはリバモアコンパイラ用の新しいCフロントエンドを作成しましたが、それはメガバイトのスタックスペースが必要であり、64Kしかない68000 Unixシステムでは不可能であることを認識し、新しいコンパイラをゼロから作成する必要があると結論付けました。パステルコンパイラコードはGCCで終了しませんでしたが、ストールマンは自分が書いたCフロントエンドを使用しました。
次の部分に注意してください。
ストールマンはリバモアコンパイラ用の新しいCフロントエンドを作成しましたが、メガバイトのスタックスペースが必要であり、64Kしかない68000 Unixシステムでは不可能であることに気付きました...
そのGCC was first released March 22, 1987
*とSystem V Release 3 was released in 1986
**を考えると、GCCがSVR2またはSVR3のいずれかで作成された可能性が非常に高いです。
ウィキペディアの引用によると、ストールマンがUnixベースのシステムVであるLawrence Livermore Labsの機器に取り組んでいたことは明らかです。しかし、その時点で利用可能なMS-DOS / PC-DOSシステムを見るのも興味深いです。このタイムラインによれば、PC-DOS 1の候補はバージョン3.2でした。
PC(パーソナルコンピュータ)は、そのネットワーク設備がUnixベースのシステムが提供できるものほど良くなかったため、当時の学術や研究の設定ではそれほど広く使用されていませんでした。サーバー/端末タイプの環境に対する歴史的な好みもありました。サーバー/ターミナルシステムは、PCが登場する前から利用可能であり、PCが手頃な価格で提供できるものよりもはるかに大きな処理能力とその他のリソースを提供していました。
したがって、ストールマンは PCでGCC を開発できたかもしれませんが、彼の主な仕事はUnixシステムでしたので、彼はおそらく望んでいなかったでしょう。
また、コメントで述べたように、 UnixシステムとPCに電力を供給するCPUの間には、根本的なアーキテクチャ上の違いがありました。
これらすべてをまとめると、GCCの開発時にストールマンがIntelではなくAT&T構文を選択した理由は明らかです。
1 MS-DOSがバージョン3.31より前のPC-DOSと呼ばれていたと言うのが最も簡単であることに注意してください。そうは言っても、この質問の範囲外であるDOS開発の歴史にはたくさんあります。