Apakah kompiler gcc C ditulis dalam C itu sendiri? Atau apakah itu tertulis dalam Assembly? Jika kompilator ditulis dalam C, lalu apa kompilator yang digunakan untuk mengkompilasi kode kompilator?
c
gcc
compiler-construction
euforia83
sumber
sumber
Jawaban:
Riwayat khusus untuk gcc diberikan di GCC Wiki . Poin yang lebih umum adalah bahwa kompiler pada umumnya pada awalnya dikompilasi dengan beberapa kompilator lain sampai mereka cukup kuat untuk mengkompilasi sendiri. Sebagai alternatif, dimungkinkan untuk menulis kompilator dasar yang dapat menangani subset fitur Anda di assembler, dan membangun dari sana. Tetapi sekali lagi, ini hampir tidak pernah dibutuhkan lagi. Ada banyak kompiler yang tersedia, dalam berbagai bahasa. Bahkan ketika Stephen Johnson sedang menulis pcc (salah satu kompiler C pertama), ada kompiler untuk B yang tersedia, bersama dengan banyak bahasa lainnya. gcc memiliki beberapa kompiler yang dapat dipilih untuk membangunnya secara asli, dan RMS mengatakan bahwa dia menggunakan kompiler Pastel setidaknya selama pengembangan awalnya.
Ingat, tidak ada persyaratan bahwa kompiler C harus ditulis dalam C. Anda dapat menulisnya di Perl jika Anda mau. Tidak ada persyaratan bahwa kompiler untuk platform tertentu harus aslinya ditulis pada platform itu (sistem tertanam hampir selalu dikompilasi pada sistem lain). Jadi ada banyak cara untuk membuat diri Anda bootstrap.
Pertanyaan ini memiliki beberapa seluk-beluk menarik terkait dengan contoh pertama bootstrap kompilator. Jika Anda sangat pintar, Anda dapat menggunakan bootstrap itu untuk melakukan sesuatu yang luar biasa, brilian, dan menakutkan .
sumber
Awalnya itu ditulis dalam beberapa bahasa assembly kemudian mulai menjadi makanan anjing itu sendiri.
sumber
Meskipun ini jelas hanya indikator yang sangat kasar, saya menemukan daftar singkat ini di
gcc-5.1.0-src/gcc/
direktori menarik. Direktori ini berisi sumber utama GCC itu sendiri (kecuali untuk pustaka waktu proses).Berikut adalah jumlah file teratas (lebih dari 100) yang dikelompokkan berdasarkan ekstensi yang didominasi oleh file C dan C ++.
112 .opt 118 .def 140 .cc 185 .x 250 .exp 353 .md 366 .mm 414 .f 430 .f03 521 .m 625 .a 1082 .go 1371 .h 1602 .ads 1655 .adb 1828 .ada 3860 .f90 11231 .C // C++ 23811 .c // C
Harap dicatat bahwa saat ini
GCC
mengacu pada Koleksi Kompilator GNU, bukan hanya Kompilator GNU C.Referensi: https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html
sumber