GCCがデフォルトでAT&T構文を使用するのはなぜですか?


9

タイトルはそれをすべて言うと思います:)

GCCがAT&T / GAS構文を使用する特別な実用的な理由はありますか?

注:これは単なるデフォルトであり、切り替えることができます

注2:個人的には「インテルの構文」の方がずっと読みやすいと思うので、驚いたのはこのためです。


3
その機能を追加して「なぜ」と尋ねた人を追い詰めない限り、答えはおそらく分からないでしょう。

1
@MichaelT私はその可能性を認識していますが、それでもかなり興味深いトピックを見つけました...誰かが引用などを見たかもしれません。
Vyktor 2014年

@Vyktorこのような質問があり、時には unanswerableが、私はまだ「の灰色の領域にいる場合でも、面白いことを計算機科学の歴史を見つけるのトピック

@Snowmanは同意しましたが、GlenH7が行ったことが私に起こった場合(グーグルの代わりにgccの履歴をたどるwhy gcc uses at&t)、その質問はしません。
Vyktor 2014年

回答:


13

GCCはAT&T構文をデフォルトで使用します。これは、もともとAT&T System V(現在はUNIXと呼ばれます)を使用するシステム、またはSystem Vによく似た構文を持つシステムで記述されているためです。

GCCのWikipediaから

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開発の歴史にはたくさんあります。


私は逃したか理解していない、このインテルの構文は、MS-DOSやWindowsの世界で支配的であり、そしてUnixのはAT&Tベル研究所で作成されたので、AT&Tは、構文は、Unixの世界で支配的である。」あなたの答えに参加そのわずかに見えますとても簡単です。
Vyktor 2014年

ただし、この回答では触れないのは、GASが他の非常に多くのCPUアーキテクチャで「ネイティブ」構文を使用する理由です。x86 CPUは、AT&T構文を実際に使用する数少ないCPUの1つに思えます。
Dolda2000 2016

「... UnixシステムとPCに電力を供給するCPUの間には、根本的なアーキテクチャ上の違いがありました。」え?CPUは同じでした。命令セットのアーキテクチャは同じでした。AT&T構文は、常に同じ基本アーキテクチャーの代替表記法です。正しい?
Maxpm 2017年

1
@Maxpm-CPUが同じではなかったため、ビッグエンディアンアーキテクチャとリトルエンディアンアーキテクチャが重要になります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.