2012-01-08 15 views
14

मैं प्रोग्रामिंग एलएलवीएम बैकएंड सीख रहा हूं।एलएलवीएम बैकएंड प्रोग्रामिंग सीखने के लिए कोड उदाहरण

वर्तमान में मुझे विश्लेषण पास, बाद में कार्यक्रम परिवर्तनों में रूचि है। (मुझे लगता है कि मैं विश्लेषण के साथ अधिक धाराप्रवाह होगा तो कार्यक्रम परिवर्तन के लिए समय होगा)।

क्या आप सीखने के लिए संसाधनों की सिफारिश कर सकते हैं? (मुझे एलएलवीएम प्रोग्रामर मैनुअल और ड्रैगन बुक पता है;))।

संसाधनों से मेरा मतलब न केवल ट्यूटोरियल, किताबें, लेकिन विशेष रूप से छोटी अच्छी तरह से लिखित परियोजनाओं है। मैं कोड उदाहरण पढ़ना चाहता हूं, व्यावहारिक कार्यान्वयन के बारे में और जानने के लिए उन्हें संकलित करें और उनके साथ खेलें (थोड़ा सा हैक)।

उन कोडों को विश्लेषण भाग तक सीमित नहीं होना चाहिए। विषय सामान्य रूप से एलएलवीएम बैकएंड प्रोग्रामिंग है, जबकि विश्लेषण और प्रोग्राम रूपांतरण सबसे दिलचस्प हैं।

+1

थोड़ा टेंगेंट: [कोशिश करें एलएलवीएम] (http://llvm.org/demo/index.cgi) पृष्ठ का उपयोग करके, कोई समकक्ष एलएलवीएम सी ++ एपीआई स्रोत उत्पन्न करने के लिए कह सकता है जो आईआर उत्पन्न करता। यह किसी विशेष अनुवाद की तलाश करते समय (या नहीं) मदद कर सकता है। –

उत्तर

2

सभी एलएलवीएम रूपांतरणों को lib/transforms dir के अंदर स्वयं निहित पास के रूप में व्यवस्थित किया जाता है, आप अपने स्रोतों को पढ़ सकते हैं और opt टूल का उपयोग करके अपने कोड पर किसी भी मनमाना पास को चला सकते हैं।

इसके अलावा, अपने स्वयं के पास लिखने के तरीके पर अच्छा ट्यूटोरियल है और पूरे एलएलवीएम को दोबारा बिना लोड करने योग्य मॉड्यूल के रूप में इसका उपयोग करें।

तो पहले से ही काफी विस्तृत खेल का मैदान है।

+2

** मैंने प्रलेखन स्वयं और llvm स्रोत से कुछ और पूछा है। विशेष रूप से मैंने छोटे (यहां तक ​​कि हैकिंग एलएलवीएम के खिलौने-उदाहरण) परियोजनाओं के बारे में लिखा है **। मैंने [एलएलवीएम मैनुअल] (http://llvm.org/docs/) के ज्ञान के बारे में जोर दिया है, जिसमें निम्न शामिल हैं: ["प्रोग्रामिंग" भाग में वर्णित एलएलवीएम डॉक्सिजन] (http://llvm.org/doxygen/) के बारे में [एलएलवीएम सीएमके गाइड] (http://llvm.org/docs/CMake.html#passdev) में स्रोत तीन से प्रोग्रामिंग ... ... बहुत सारे दस्तावेज हैं और आप परियोजना पर अच्छा समग्र दृश्य प्राप्त कर सकते हैं। फिर भी, कई मामलों में दस्तावेज बेकार है, इसलिए sth के बारे में सवाल है। –

+1

जैसा कि आप प्रलेखन के बारे में उल्लेख कर रहे हैं और * "पूरे एलएलवीएम को पुनः संयोजित किए बिना * *, मैं आपको स्रोत पेड़ से गुजरने के तरीके के बारे में बताना चाहता हूं: [सीएमके के साथ एलएलवीएम बनाना: एलएलवीएम स्रोत से बाहर निकलना] [http : //llvm.org/docs/CMake.html#passdev) –

+1

ठीक है, ठीक है, अप्रासंगिक उत्तर के लिए खेद है। पेड़ से बाहर निकलने के लिए, यह सुविधा वास्तव में मेरे द्वारा विकसित की गई थी, लॉल। – arrowd

1

किसी ऐसे व्यक्ति के रूप में जो आप करना चाहते थे 3 साल पहले: एलएलवीएम कोडबेस के सर्वोत्तम उदाहरण हैं। शायद शुरू करने के लिए एक अच्छी जगह है डोमिनेटर विश्लेषण, क्योंकि यह संकलक पुस्तकों में अच्छी तरह से वर्णित है।

चेक यह कैसे LLVM में किया जाता है: http://llvm.org/doxygen/Dominators_8h_source.html

अन्य जगह अनुदेश शेड्यूलिंग हो सकता है देखने के लिए।

1

मैं कुछ इसी तरह, कोड LLVM पुस्तकालयों का उपयोग करता है, और गूगल में लंबे सत्र के बाद मैं सिर्फ "LLVM परियोजनाओं" के अंतर्गत LLVM वेबसाइट में यह पाया लिए देख रहा था: http://llvm.org/ProjectsWithLLVM/

सिर्फ तुम क्या आप के लिए प्रासंगिक लगता है डाउनलोड और साथ खेलें।