Dlaczego GCC domyślnie korzysta ze składni AT&T?

9

Myślę, że tytuł mówi wszystko :)

Czy jest jakiś konkretny praktyczny powód (wydaje mi się, że jest to głównie historyczny, ale nie jestem w stanie go znaleźć na własną rękę), dlaczego GCC używa składni AT & T / GAS?

Uwaga: wiem, że jest to tylko domyślna opcja, którą możesz zmienić

Uwaga 2: Osobiście uważam, że „składnia Intela” jest znacznie bardziej czytelna, dlatego mnie to zaskakuje.

Vyktor
źródło
3
Odpowiedź jest prawdopodobnie nieznana, chyba że wytropisz osobę, która dodała tę funkcję i zapytała „dlaczego”.
1
@MichaelT Zdaję sobie sprawę z tej możliwości, ale wciąż uważam ten dość interesujący temat ... Może ktoś widział jakieś cytaty.
Vyktor
@Takie pytania na Vyktor są czasami nie do odpowiedzi, ale nadal uważam, że historia informatyki jest interesująca, nawet jeśli w szarej strefie „ na temat
@Snowman zgodził się, ale jeśli przyszło mi do głowy, aby zrobić to, co zrobiła GlenH7 (przejdź do historii gcc zamiast googlowania), nie zadałbym why gcc uses at&ttego pytania.
Vyktor,

Odpowiedzi:

13

GCC domyślnie używa składni AT&T, ponieważ została pierwotnie napisana w systemie, który albo używał AT&T System V (obecnie znany jako UNIX), albo miał składnię, która bardzo przypominała System V.

Z Wikipedii na GCC

Próbując uruchomić system operacyjny GNU, Richard Stallman zapytał Andrew S. Tanenbauma, autora zestawu Amsterdam Compiler Kit (znanego również jako Free University Compiler Kit), czy mógłby użyć tego oprogramowania dla GNU. Kiedy Tanenbaum powiedział mu, że podczas gdy Wolny Uniwersytet był wolny, kompilator nie, Stallman postanowił napisać własny. Początkowy plan Stallmana polegał na przepisaniu istniejącego kompilatora z Lawrence Livermore Laboratory od Pastel do C przy pomocy Len Tower i innych. Stallman napisał nowy interfejs C dla kompilatora Livermore, ale potem zdał sobie sprawę, że wymaga megabajtów miejsca na stosie, co jest niemożliwe w systemie 68000 Unix z jedynie 64 KB, i stwierdził, że będzie musiał napisać nowy kompilator od zera. Żaden kod kompilatora Pastel nie skończył się w GCC, chociaż Stallman używał napisanego przez siebie interfejsu C.

Zwróć uwagę na następującą część:

Stallman napisał nowy interfejs C dla kompilatora Livermore, ale potem zdał sobie sprawę, że wymaga megabajtów miejsca na stosie, co jest niemożliwe w systemie 68000 Unix z zaledwie 64 KB ...

Biorąc pod uwagę to GCC was first released March 22, 1987* i to System V Release 3 was released in 1986** , jest wysoce prawdopodobne, że GCC zostało zapisane na SVR2 lub SVR3.


Cytat z Wikipedii wyjaśnia, że ​​Stallman pracował na sprzęcie Lawrence Livermore Labs, który był oparty na systemie Unix, a zatem na Systemie V. Mogliśmy więc się tam zatrzymać i powiedzieć „nad tym musiał pracować”. Interesujące jest również spojrzenie na dostępne systemy MS-DOS / PC-DOS w tym momencie. Zgodnie z tym harmonogramem prawdopodobnym kandydatem na PC-DOS 1 byłaby wersja 3.2.

Komputery osobiste (komputery osobiste) nie były wtedy tak powszechnie używane w środowisku akademickim lub badawczym, ponieważ ich możliwości sieciowe nie były tak dobre, jak mogłyby zapewnić systemy oparte na Uniksie. Historycznie preferowano również środowiska typu serwer / terminal. Systemy serwerów / terminali były dostępne przed istnieniem komputerów osobistych i generalnie zapewniały znacznie większą moc przetwarzania i inne zasoby niż to, co komputer mógł sobie pozwolić.

Tak więc chociaż Stallman mógł opracować GCC na PC, prawdopodobnie nie chciałby, ponieważ jego podstawową pracą byłyby systemy Unix.

Jak zauważono w komentarzu , istniała zasadnicza różnica architektoniczna między procesorami zasilającymi systemy Unix i komputery PC.

Połącz te wszystkie elementy i jest całkiem jasne, dlaczego Stallman wybrał składnię AT&T zamiast Intela podczas opracowywania GCC.

1 Zauważ, że najłatwiej jest powiedzieć, że MS-DOS nazywał się PC-DOS przed wersją 3.31. To powiedziawszy, w historii rozwoju DOS jest wiele rzeczy, które są poza zakresem tego pytania.

Społeczność
źródło
Nie rozumiem, jak przeoczyłem Składnia Intela dominuje w świecie MS-DOS i Windows, a składnia AT&T dominuje w świecie Unixa, ponieważ Unix został stworzony w AT&T Bell Labs. ” W połączeniu z Twoją odpowiedzią wydaje się, że tak prosto.
Vyktor,
Jednak odpowiedź ta nie dotyczy tego, dlaczego GAS używa „natywnej” składni dla tak wielu innych architektur CPU. Wydaje mi się, że procesory x86 należą do niewielu, dla których faktycznie używa składni AT&T.
Dolda2000
„… istniała zasadnicza różnica architektoniczna między procesorami zasilającymi systemy Unix a komputery PC”. Co? Procesory były takie same. Architektura zestawu instrukcji była taka sama. Składnia AT&T zawsze była alternatywną notacją dla tej samej podstawowej architektury. Dobrze?
Maks.
1
@Maxpm - Procesory nie były takie same i tutaj ważne są duże i małe architektury endianów.