Mã nguồn thực tế cho GCC có thể truy cập hầu hết từ đây:
https://gcc.gnu.org/svn.html
Phần mềm này có thể truy cập thông qua SVN (lật đổ), một hệ thống kiểm soát mã nguồn. Điều này sẽ được cài đặt trên nhiều phiên bản của Linux/UNIX, nhưng nếu không phải trên nền tảng của bạn, bạn có thể cài đặt các bộ svn và sau đó lấy nguồn bằng cách sử dụng lệnh sau:
svn checkout svn://gcc.gnu.org/svn/gcc/trunk SomeLocalDir
GCC rất phức tạp và sẽ mất kinh nghiệm đáng kể để hiểu bản chất của cách ứng dụng thực sự biên dịch sang các kiến trúc khác nhau.
Tóm lại, GCC có ba thành phần chính - xử lý front-end, middle và back-end. Bộ xử lý front-end có thành phần của phân tích ngôn ngữ để hiểu cú pháp của các ngôn ngữ (như C, C++, Objective-C, v.v.). Front-end deconstructs code thành một cấu trúc di động sau đó được truyền tới back-end để biên dịch tới môi trường đích.
Phần giữa thực hiện phân tích và tối ưu hóa mã, cố gắng ưu tiên mã để tạo ra sản lượng tốt nhất có thể vào cuối toàn bộ quá trình. Về mặt kỹ thuật, tối ưu hóa có thể xảy ra ở bất kỳ phần nào của quá trình khi các mẫu được phát hiện trong quá trình phân tích.
Bộ xử lý phía sau biên dịch mã thành định dạng đầu ra kiểu cây (không phải là mã thực thi cuối cùng). Dựa trên những gì đầu ra dự kiến được thiết kế để được, các "pseudo-code" được tối ưu hóa cho việc sử dụng thanh ghi, kích thước bit, endian-ness, và như vậy. Mã cuối cùng sau đó được tạo ra trong giai đoạn lắp ráp, mà chuyển đổi mã back-end thành các lệnh thực thi máy. Điều quan trọng cần lưu ý là trình biên dịch có nhiều tùy chọn để xử lý các định dạng đầu ra để bạn có thể tạo đầu ra cho nhiều lớp kiến trúc, thường là ra khỏi hộp. Đối với cross-biên dịch và biên dịch mục tiêu lựa chọn, hãy thử kiểm tra liên kết này:
https://gcc.gnu.org/install/configure.html
'gcc' là rất mạnh mẽ, nhưng đồng thời nó là vô cùng phức tạp và không thân thiện. Tôi khuyên bạn nên tiếp cận việc học khu vực này từ phía LLVM. Nó đẹp, sạch sẽ và gọn gàng, với mỗi bước độc đáo được phân lập để dễ hiểu hơn nhiều. Tôi muốn đề nghị để bắt đầu bằng cách đọc này: http://eli.thegreenplace.net/2012/11/24/life-of-an-instruction-in-llvm –