जीसीसी के लिए वास्तविक स्रोत कोड यहाँ से सबसे सुलभ है:
https://gcc.gnu.org/svn.html
सॉफ्टवेयर SVN (तोड़फोड़), एक स्रोत कोड नियंत्रण प्रणाली के माध्यम से पहुँचा जा सकता है। यह लिनक्स/यूनिक्स के कई संस्करणों पर स्थापित किया जा सकता है, लेकिन अपने मंच पर नहीं हैं, तो आप SVN किट स्थापित करें और उसके बाद निम्न आदेश का उपयोग स्रोत लाने कर सकते हैं:
svn checkout svn://gcc.gnu.org/svn/gcc/trunk SomeLocalDir
जीसीसी जटिल है और महत्वपूर्ण अनुभव ले जाएगा यह प्रकृति को समझने के लिए कि एप्लिकेशन वास्तव में विभिन्न आर्किटेक्चर के लिए कैसे संकलित करता है।
संक्षेप में, जीसीसी में तीन प्रमुख घटक हैं - फ्रंट एंड, मध्य और बैक-एंड प्रोसेसिंग। फ्रंट-एंड प्रोसेसर में भाषाओं के सिंटैक्स को समझने के लिए भाषा पार्सिंग का घटक होता है (जैसे सी, सी ++, ऑब्जेक्टिव-सी, आदि)। फ्रंट एंड एक पोर्टेबल निर्माण के लिए कोड deconstructs जो फिर लक्षित पर्यावरण के संकलन के लिए बैक एंड के पास पारित किया जाता है।
मध्य भाग कोड विश्लेषण और अनुकूलन करता है, पूर्ण प्रक्रिया के अंत में सर्वोत्तम संभव आउटपुट उत्पन्न करने के लिए कोड को प्राथमिकता देने का प्रयास करता है। तकनीकी रूप से, प्रक्रिया के किसी भी हिस्से में ऑप्टिमाइज़ेशन हो सकता है क्योंकि विश्लेषण के दौरान पैटर्न खोजे जाते हैं।
बैक-एंड प्रोसेसर कोड को पेड़-शैली आउटपुट प्रारूप (वास्तव में अंतिम निष्पादन योग्य कोड) में संकलित करता है। अपेक्षित आउटपुट के आधार पर डिज़ाइन किए जाने के आधार पर, "छद्म कोड" को रजिस्टरों, बिट-साइज, एंडियन-नेस आदि का उपयोग करने के लिए अनुकूलित किया गया है। अंतिम कोड तब असेंबली चरण के दौरान उत्पन्न होता है, जो बैक-एंड कोड को मशीन निष्पादन योग्य निर्देशों में परिवर्तित करता है।
यह ध्यान रखना महत्वपूर्ण है कि कंपाइलर में आउटपुट स्वरूपों से निपटने के लिए कई विकल्प हैं ताकि आप आमतौर पर बॉक्स के बाहर वास्तुकला के कई वर्गों में आउटपुट बना सकें। पार संकलन और लक्ष्य संकलक विकल्पों के लिए, इस लिंक बाहर की जाँच की कोशिश:
https://gcc.gnu.org/install/configure.html
'gcc' बहुत शक्तिशाली है, लेकिन एक ही समय में यह बेहद जटिल और अमित्र है। मैं एलएलवीएम पक्ष से इस क्षेत्र को सीखने के लिए दृष्टिकोण की सिफारिश करता हूं। यह अच्छा, साफ और कॉम्पैक्ट है, प्रत्येक चरण अच्छी तरह से अलग है, इसलिए इसे समझना बहुत आसान है। मैं इसे पढ़कर शुरू करने का सुझाव दूंगा: http://eli.thegreenplace.net/2012/11/24/life-of-an-instruction-in-llvm –