जबकि आप जीसीसी में -fdump-tree-all
और -fdump-rtl-all
विकल्पों का उपयोग कर सकते हैं, मुझे नहीं लगता कि उनका आउटपुट एक कंपाइलर छात्र के लिए बहुत उपयोगी है। एफडब्ल्यूआईडब्ल्यू, मैंने अपने पीएचडी अध्ययनों के हिस्से के रूप में जीसीसी पर काम करना शुरू कर दिया है, पहले से ही दो स्नातक पाठ्यक्रम पूरा कर लिया है, और मुझे gcc
मिली और इसकी डीबग फाइलें अपारदर्शी और अनुपालन करने में कठोर थीं।
इसके अलावा, जीसीसी वास्तव में संकलकों के पाठ्यपुस्तक डिजाइन का पालन नहीं करता है। कोई भी वास्तव में नहीं करता है, क्योंकि यह इस तरह से अच्छा काम नहीं करता है। मुझे पूरा यकीन है कि जीसीसी एक पार्स पेड़, या एक अमूर्त-वाक्यविन्यास-पेड़ का उत्पादन नहीं करता है। यह एक आईआर (जिसे गिंपल कहा जाता है) बनाता है जिस पर अपने उच्च स्तरीय अनुकूलन करने के लिए।
मैं इसके बजाय एलएलवीएम को आजमाने का सुझाव दूंगा, जिसमें अच्छी तरह डिज़ाइन और अनुसरण करने में आसान होने की प्रतिष्ठा है। एक अन्य विकल्प एक पाठ्यपुस्तक से कोड डाउनलोड करना है, विशेष रूप से एपेल पुस्तक, जो इसे उपलब्ध मानते हैं।
एक और सुझाव, यदि मैं एक पल के लिए अपने आप की सिफारिश कर सकता हूं, तो phc का उपयोग करना है। phc के साथ, आप पार्स पेड़ को एक छवि के रूप में देख सकते हैं, और कंपाइलर में प्रत्येक एकल पास के बाद एएसटी और स्रोत कोड देख सकते हैं। Here is a comparison of parts of the AST and the parse tree। वे phc का उपयोग कर trivially उत्पन्न होते हैं। dataflow शाखा पर, आप कंपाइलर आईआर, सीएफजी, एसएसए फॉर्म, और प्रकार अनुमान और उपनाम विश्लेषण के डीबग आउटपुट देख सकते हैं। आप ऑप्टिमाइज़ेशन भी बदल सकते हैं और उनके पास प्रभाव देखने के लिए पास और बंद हो सकते हैं।
मुझे लगता है कि यह आपके लिए उपयोगी हो सकता है।
स्रोत
2009-10-01 20:45:30
पाठकों के लिए एक नोट: विकल्प के साथ संकलक पेड़ को स्रोत कोड के नाम से एक फ़ाइल में डंप करता है और '.optimized' जैसे पोस्टफिक्स को छोड़ देता है। यह बिल्कुल स्पष्ट नहीं है, मैंने ≈20 मिनट बिताए, एक प्रलेखन के माध्यम से देखा, और उन मामलों की खोज की जो जीसीसी डंप का उत्पादन नहीं करता है, जब कभी-कभी नई फाइल * पर ध्यान दिया जाता है (जो आसान नहीं है क्योंकि मैंने परीक्षण किया है '/ tmp /', जो सुंदर जंकी है) *। –