Mengapa GCC menggunakan sintaks AT&T secara default?


9

Saya pikir judul mengatakan semuanya :)

Apakah ada alasan praktis tertentu (saya kira itu sebagian besar bersejarah, tetapi saya tidak dapat menemukannya sendiri) mengapa GCC menggunakan sintaksis AT&T / GAS?

Catatan: Saya tahu ini hanya default dan Anda dapat mengubahnya

Catatan 2: Saya pribadi menemukan "sintaks Intel" jauh lebih mudah dibaca, jadi itu sebabnya saya terkejut.


3
Jawabannya kemungkinan tidak diketahui kecuali Anda memburu orang yang menambahkan fungsionalitas itu dan bertanya 'mengapa'.

1
@MichaelT Saya menyadari kemungkinan itu, tapi saya masih menemukan topik yang cukup menarik ... Mungkin seseorang telah melihat beberapa kutipan.
Vyktor

@Vyktor pertanyaan seperti ini kadang - kadang tidak bisa dijawab, tapi saya masih menemukan sejarah ilmu komputer menjadi menarik bahkan jika di wilayah abu-abu " pada-topik "

@Snowman setuju, tetapi jika terpikir oleh saya untuk melakukan apa yang dilakukan GlenH7 (melewati sejarah gcc alih-alih googling why gcc uses at&t), saya tidak akan menanyakan pertanyaan itu.
Vyktor

Jawaban:


13

GCC menggunakan sintaks AT&T secara default karena awalnya ditulis pada sistem yang menggunakan AT&T System V (sekarang dikenal sebagai UNIX) atau memiliki sintaks yang mirip dengan Sistem V.

Dari Wikipedia di GCC

Dalam upaya untuk mem-bootstrap sistem operasi GNU, Richard Stallman bertanya kepada Andrew S. Tanenbaum, penulis Amsterdam Compiler Kit (juga dikenal sebagai Free University Compiler Kit) apakah ia dapat menggunakan perangkat lunak itu untuk GNU. Ketika Tanenbaum memberitahunya bahwa ketika Free University gratis, kompilernya tidak, Stallman memutuskan untuk menulis sendiri. Rencana awal Stallman adalah menulis ulang kompiler yang ada dari Laboratorium Lawrence Livermore dari Pastel ke C dengan bantuan dari Len Tower dan lainnya. Stallman menulis front end C baru untuk compiler Livermore, tetapi kemudian menyadari bahwa itu membutuhkan megabita ruang stack, ketidakmungkinan pada sistem 68000 Unix dengan hanya 64K, dan menyimpulkan bahwa ia harus menulis kompiler baru dari awal. Tidak satu pun dari kode kompiler Pastel berakhir di GCC, meskipun Stallman menggunakan C front end yang ia tulis.

Perhatikan bagian berikut:

Stallman menulis ujung depan C baru untuk compiler Livermore, tetapi kemudian menyadari bahwa itu membutuhkan megabita ruang stack, ketidakmungkinan pada sistem 68000 Unix dengan hanya 64K ...

Karena GCC was first released March 22, 1987* dan System V Release 3 was released in 1986** itu, sangat mungkin bahwa GCC ditulis pada SVR2 atau SVR3.


Kutipan Wikipedia menjelaskan bahwa Stallman sedang mengerjakan peralatan Lawrence Livermore Labs, yang berbasis Unix dan karenanya Sistem V. Jadi kita bisa berhenti di situ dan hanya mengatakan "itulah yang harus dia kerjakan." Tetapi juga menarik untuk melihat sistem MS-DOS / PC-DOS yang tersedia pada saat itu. Menurut garis waktu ini , kandidat untuk PC-DOS 1 kemungkinan adalah versi 3.2.

PC (komputer pribadi) tidak banyak digunakan dalam pengaturan akademik atau penelitian pada saat itu karena fasilitas jaringan mereka tidak sebagus apa yang dapat diberikan oleh sistem berbasis Unix. Ada juga preferensi historis untuk lingkungan tipe server / terminal. Sistem server / terminal telah tersedia sebelum keberadaan PC dan umumnya memberikan daya pemrosesan yang lebih besar dan sumber daya lain dari pada yang dapat disediakan oleh PC.

Jadi, sementara Stallman dapat mengembangkan GCC pada PC, ia kemungkinan tidak akan menginginkannya karena pekerjaan utamanya adalah pada sistem Unix.

Dan seperti disebutkan dalam komentar , ada perbedaan arsitektur yang mendasarinya antara CPU yang menggerakkan sistem Unix dan PC.

Letakkan semua potongan itu dan cukup jelas mengapa Stallman memilih sintaks AT&T daripada Intel saat mengembangkan GCC.

1 Perhatikan bahwa paling mudah untuk mengatakan bahwa MS-DOS disebut PC-DOS sebelum versi 3.31. Yang sedang berkata, ada banyak sejarah pengembangan DOS yang di luar lingkup pertanyaan ini.


Saya tidak mengerti bagaimana saya melewatkan ini " Sintaks Intel dominan di dunia MS-DOS dan Windows, dan sintaksis AT&T dominan di dunia Unix, karena Unix dibuat di AT&T Bell Labs. " Bergabung dengan jawaban Anda, sepertinya hanya sangat lurus ke depan.
Vyktor

Namun apa yang tidak disinggung oleh jawaban ini adalah mengapa GAS menggunakan sintaks "asli" untuk begitu banyak arsitektur CPU lainnya. Menurut saya x86 CPU adalah beberapa di antaranya yang sebenarnya menggunakan sintaks AT&T.
Dolda2000

"... ada perbedaan arsitektural mendasar antara CPU yang menggerakkan sistem Unix dan PC." Hah? CPU-nya sama. Arsitektur set instruksi sama. Sintaks AT&T selalu menjadi notasi alternatif untuk arsitektur dasar yang sama. Baik?
Maks.

1
@ Maxpm - CPU tidak sama, dan ini adalah di mana arsitektur endian besar vs kecil.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.