Warum verwendet GCC standardmäßig die AT & T-Syntax?

9

Ich denke, der Titel sagt alles :)

Gibt es einen bestimmten praktischen Grund (ich denke, es ist größtenteils historisch, aber ich kann ihn nicht alleine finden), warum GCC die AT & T / GAS-Syntax verwendet?

Hinweis: Ich weiß, dass dies nur die Standardeinstellung ist und Sie sie wechseln können

Anmerkung 2: Ich persönlich finde "Intel-Syntax" viel besser lesbar, deshalb überrascht es mich.

Vyktor
quelle
3
Die Antwort ist wahrscheinlich nicht bekannt, es sei denn, Sie suchen nach der Person, die diese Funktionalität hinzugefügt und nach dem Warum gefragt hat.
1
@MichaelT Ich bin mir dieser Möglichkeit bewusst, aber ich finde das ziemlich interessante Thema ... Vielleicht hat jemand ein Zitat oder so gesehen.
Vyktor
@Vyktor Fragen wie diese sind manchmal unbeantwortbar, aber ich finde die Geschichte der Informatik immer noch interessant, auch wenn sie sich in der Grauzone von " on-topic " befindet
@Snowman stimmte zu, aber wenn es mir einfiel, das zu tun, was GlenH7 tat (durch die gcc-Geschichte gehen, anstatt zu googeln why gcc uses at&t), würde ich diese Frage nicht stellen.
Vyktor

Antworten:

13

GCC verwendet standardmäßig die AT & T-Syntax, da sie ursprünglich auf einem System geschrieben wurde, das entweder AT & T System V (jetzt als UNIX bekannt) verwendete oder eine Syntax hatte, die System V sehr ähnlich war.

Aus Wikipedia auf GCC

Um das GNU-Betriebssystem zu booten, fragte Richard Stallman Andrew S. Tanenbaum, den Autor des Amsterdam Compiler Kit (auch als Free University Compiler Kit bekannt), ob er diese Software für GNU verwenden könne. Als Tanenbaum ihm sagte, dass die Freie Universität zwar frei sei, der Compiler jedoch nicht, beschloss Stallman, seine eigene zu schreiben. Stallmans ursprünglicher Plan war es, einen vorhandenen Compiler des Lawrence Livermore Laboratory von Pastel nach C mit Hilfe von Len Tower und anderen umzuschreiben. Stallman schrieb ein neues C-Frontend für den Livermore-Compiler, erkannte dann jedoch, dass es Megabyte Stack-Speicherplatz benötigte, was auf einem 68000 Unix-System mit nur 64 KB unmöglich war, und kam zu dem Schluss, dass er einen neuen Compiler von Grund auf neu schreiben musste. Keiner der Pastel-Compiler-Codes landete in GCC, obwohl Stallman das von ihm geschriebene C-Frontend verwendete.

Beachten Sie den folgenden Teil:

Stallman schrieb ein neues C-Frontend für den Livermore-Compiler, stellte dann jedoch fest, dass Megabyte Stack-Speicherplatz erforderlich waren, was auf einem 68000 Unix-System mit nur 64 KB unmöglich ist ...

Angesichts dessen GCC was first released March 22, 1987* und System V Release 3 was released in 1986** ist es sehr wahrscheinlich, dass GCC entweder auf SVR2 oder SVR3 geschrieben wurde.


Das Wikipedia-Zitat macht deutlich, dass Stallman an den Geräten der Lawrence Livermore Labs arbeitete, die auf Unix und damit auf System V basierten. Wir konnten also dort anhalten und einfach sagen: "Daran musste er arbeiten." Es ist aber auch interessant, sich die zu diesem Zeitpunkt verfügbaren MS-DOS / PC-DOS- Systeme anzusehen . Nach diesem Zeitplan wäre der wahrscheinliche Kandidat für PC-DOS 1 Version 3.2 gewesen.

PCs (Personal Computer) waren zu diesem Zeitpunkt in akademischen oder Forschungsumgebungen nicht so weit verbreitet, da ihre Netzwerkeinrichtungen nicht so gut waren wie die von Unix-basierten Systemen. Es gab auch eine historische Präferenz für Umgebungen vom Typ Server / Terminal. Server- / Terminalsysteme waren vor der Existenz von PCs verfügbar und stellten im Allgemeinen eine viel größere Verarbeitungsleistung und andere Ressourcen bereit, als ein PC kostengünstig bereitstellen konnte.

Während Stallman GCC auf einem PC hätte entwickeln können, hätte er es wahrscheinlich nicht gewollt, da seine Hauptarbeit auf Unix-Systemen gewesen wäre.

Und wie in einem Kommentar erwähnt , gab es einen zugrunde liegenden architektonischen Unterschied zwischen den CPUs, die Unix-Systeme und PCs mit Strom versorgen.

Füge all diese Teile zusammen und es ist ziemlich klar, warum Stallman bei der Entwicklung von GCC die AT & T-Syntax gegenüber Intel gewählt hat.

1 Beachten Sie, dass MS-DOS vor Version 3.31 am einfachsten als PC-DOS bezeichnet wurde . Abgesehen davon gibt es in der Geschichte der DOS-Entwicklung viel, was außerhalb des Rahmens dieser Frage liegt.

Gemeinschaft
quelle
Ich verstehe nicht, wie ich diese Frage verpasst habe: "Die Intel-Syntax ist in der MS-DOS- und Windows-Welt dominant, und die AT & T-Syntax ist in der Unix-Welt dominant, da Unix bei AT & T Bell Labs erstellt wurde. " so einfach.
Vyktor
Diese Antwort berührt jedoch nicht, warum GAS die "native" Syntax für so viele andere CPU-Architekturen verwendet. x86-CPUs scheinen mir zu den wenigen zu gehören, für die tatsächlich AT & T-Syntax verwendet wird.
Dolda2000
"... es gab einen architektonischen Unterschied zwischen den CPUs, die Unix-Systeme und PCs mit Strom versorgen." Huh? Die CPUs waren die gleichen. Die Befehlssatzarchitektur war dieselbe. Die AT & T-Syntax war schon immer eine alternative Notation für dieselbe zugrunde liegende Architektur. Richtig?
Maxpm
1
@Maxpm - Die CPUs waren nicht die gleichen, und hier spielen große und kleine Endian-Architekturen eine Rolle.