Trình biên dịch gcc C có được viết bằng chính C không? Hay nó được viết trong Assembly? Nếu trình biên dịch được viết bằng C, thì trình biên dịch dùng để biên dịch mã trình biên dịch là gì?
Trình biên dịch gcc C có được viết bằng chính C không? Hay nó được viết trong Assembly? Nếu trình biên dịch được viết bằng C, thì trình biên dịch dùng để biên dịch mã trình biên dịch là gì?
Câu trả lời:
Lịch sử cụ thể của gcc được cung cấp tại GCC Wiki . Điểm tổng quát hơn là các trình biên dịch thường được biên dịch ban đầu với một số trình biên dịch khác cho đến khi chúng đủ mạnh để tự biên dịch. Ngoài ra, có thể viết một trình biên dịch cơ bản có thể xử lý một tập hợp con các tính năng của bạn trong trình hợp dịch và xây dựng từ đó. Nhưng một lần nữa, điều này hầu như không bao giờ cần thiết nữa. Có rất nhiều trình biên dịch có sẵn, với nhiều ngôn ngữ khác nhau. Ngay cả khi Stephen Johnson đang viết pcc (một trong những trình biên dịch C đầu tiên), đã có những trình biên dịch cho B, cùng với nhiều ngôn ngữ khác. gcc có một số trình biên dịch để lựa chọn để xây dựng nó ban đầu và RMS cho biết anh ta đang sử dụng trình biên dịch Pastel ít nhất trong quá trình phát triển ban đầu của mình.
Hãy nhớ rằng không có yêu cầu rằng trình biên dịch C phải được viết bằng C. Bạn có thể viết nó bằng Perl nếu bạn muốn. Không có yêu cầu rằng một trình biên dịch cho một nền tảng nhất định phải được viết ban đầu trên nền tảng đó (các hệ thống nhúng hầu như luôn được biên dịch trên một số hệ thống khác). Vì vậy, có nhiều cách để giúp bạn khởi động.
Câu hỏi này có một số điều tinh tế thú vị liên quan đến trường hợp đầu tiên của việc khởi động trình biên dịch. Nếu bạn rất thông minh, bạn có thể sử dụng chiếc bootstrap đó để làm một điều gì đó phi thường, tuyệt vời và đáng sợ .
Ban đầu nó được viết bằng một số ngôn ngữ lắp ráp sau đó nó bắt đầu tự làm thức ăn cho chó.
Mặc dù đây rõ ràng chỉ là một chỉ số rất sơ sài, nhưng tôi thấy danh sách nhanh này trên gcc-5.1.0-src/gcc/
danh bạ rất thú vị. Thư mục này chứa các nguồn chính của chính GCC (ngoại trừ các thư viện thời gian chạy).
Dưới đây là số lượng tệp hàng đầu (hơn 100) được nhóm theo phần mở rộng được thống trị bởi các tệp C và 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
Xin lưu ý rằng ngày nay GCC
đề cập đến Bộ sưu tập trình biên dịch GNU, không chỉ là Trình biên dịch GNU C.
6.3 Thư mục con gcc
Thư mục gcc chứa nhiều tệp là một phần của nguồn C của GCC, các tệp khác được sử dụng như một phần của quá trình cấu hình và xây dựng, và các thư mục con bao gồm tài liệu và testsuite.
Tham khảo: https://gcc.gnu.org/onlineocs/gccint/gcc-Directory.html