जवाबों:
एलएलवीएम एक पुस्तकालय है जिसका उपयोग मध्यवर्ती और / या बाइनरी मशीन कोड के निर्माण, अनुकूलन और उत्पादन के लिए किया जाता है।
LLVM का उपयोग एक कंपाइलर फ्रेमवर्क के रूप में किया जा सकता है, जहाँ आप "फ्रंट एंड" (पार्सर और लेक्सर) और "बैक एंड" (कोड जो LLVM के प्रतिनिधित्व को वास्तविक मशीन कोड में परिवर्तित करते हैं) प्रदान करते हैं।
LLVM एक JIT कंपाइलर के रूप में भी कार्य कर सकता है - इसमें x86 / x86_64 और PPC / PPC64 असेंबली जेनरेशन के लिए सपोर्ट कोड है जो फास्ट कोड ऑप्टिमाइजेशन के लिए तैयार है।
यदि आप रुचि रखते हैं, तो आप LLVM के मशीन कोड के साथ खेल सकते हैं जो उनके डेमो पेज में C या C ++ कोड से उत्पन्न होता है , लेकिन डेमो पेज वर्तमान में वर्ष 2013 से अक्षम है।
LLVM का एक अच्छा सारांश यह है:
सीमांत पर आपके पास पर्ल, और कई अन्य उच्च स्तरीय भाषाएं हैं। बैकएंड में, आपके पास मूल कोड है जो सीधे मशीन पर चलता है।
केंद्र में आपका मध्यवर्ती कोड प्रतिनिधित्व है। यदि इस एलएलवीएम आईआर प्रारूप में हर उच्च स्तरीय भाषा का प्रतिनिधित्व किया जा सकता है, तो इस आईआर पर आधारित विश्लेषण उपकरण आसानी से पुन: उपयोग किए जा सकते हैं - यही मूल तर्क है।
LLVM (जिसका अर्थ "लो लेवल वर्चुअल मशीन" है, लेकिन अब नहीं है) एक संकलक बुनियादी ढांचा है, जो C ++ में लिखा गया है, जिसे संकलन-समय, लिंक-टाइम, रन-टाइम और "निष्क्रिय-समय" के लिए डिज़ाइन किया गया है मनमाने ढंग से प्रोग्रामिंग भाषाओं में। मूल रूप से सी / सी ++ के लिए लागू किया गया, एलएलवीएम की भाषा-स्वतंत्र डिजाइन (और सफलता) के बाद से सामने वाले छोरों की एक विस्तृत विविधता पैदा हुई है, जिसमें ऑब्जेक्टिव सी, फोरट्रान, एडा, हास्केल, जावा बाइटकोड, पायथन, रूबी, एक्शनस्क्रिप्ट, जीएलएसएल शामिल हैं। , और दूसरे।
अधिक विवरण के लिए इस पढ़ें
इसके अलावा बाहर की जाँच Unladen निगल
के अनुसार 'LLVM कोर पुस्तकालय के साथ शुरूआत' पुस्तक (ग):
वास्तव में, एलएलवीएम नाम निम्नलिखित में से किसी को संदर्भित कर सकता है:
एलएलवीएम परियोजना / बुनियादी ढांचा: यह कई परियोजनाओं के लिए एक छाता है, जो एक साथ, एक पूर्ण संकलक बनाते हैं: फ्रंटेंड, बैकएंड, ऑप्टिमाइज़र, कोडांतरक, लिंकर्स, libc ++, कंपाइलर-आरटी, और एक जेआईटी इंजन। शब्द "एलएलवीएम" का यह अर्थ है, उदाहरण के लिए, निम्नलिखित वाक्य में: "एलएलवीएम में कई परियोजनाएं शामिल हैं"।
एक LLVM- आधारित संकलक: यह आंशिक रूप से या पूरी तरह से LLVM अवसंरचना के साथ निर्मित एक संकलक है। उदाहरण के लिए, एक कंपाइलर फ्रंट और बैकएंड के लिए एलएलवीएम का उपयोग कर सकता है लेकिन अंतिम लिंक करने के लिए जीसीसी और जीएनयू सिस्टम लाइब्रेरी का उपयोग कर सकता है। एलएलवीएम का यह अर्थ निम्न वाक्य में है, उदाहरण के लिए: "मैंने एलवीवीएम का उपयोग सी प्रोग्राम्स को एमआइपीएस प्लेटफॉर्म पर संकलित करने के लिए किया"।
एलएलवीएम पुस्तकालय: यह एलएलवीएम बुनियादी ढांचे का पुन: प्रयोज्य कोड हिस्सा है। उदाहरण के लिए, एलएलवीएम का वाक्य में यह अर्थ है: "मेरी परियोजना अपने जस्ट-इन-टाइम संकलन ढांचे के माध्यम से कोड उत्पन्न करने के लिए एलएलवीएम का उपयोग करती है"।
एलएलवीएम कोर: मध्यवर्ती भाषा के स्तर पर होने वाले अनुकूलन और बैकएंड एल्गोरिदम एलएलवीएम कोर बनाते हैं जहां परियोजना शुरू हुई थी। एलएलवीएम का निम्नलिखित अर्थ में यह अर्थ है: "एलएलवीएम और क्लैंग दो अलग-अलग परियोजनाएं हैं"।
LLVM IR: यह LLVM संकलक मध्यवर्ती प्रतिनिधित्व है। LLVM का यह अर्थ है जब वाक्यों में उपयोग किया जाता है जैसे कि "मैंने एक ऐसा फ्रंट बनाया जो अपनी भाषा को LLVM में अनुवाद करता है"।
LLVM मूल रूप से संकलक और / या भाषा उन्मुख सॉफ्टवेयर बनाने के लिए उपयोग किया जाने वाला पुस्तकालय है। मूल जीआईटी हालांकि आपके पास जीसीसी है जो संभवतः संकलक का सबसे आम सूट है, इसे फिर से प्रयोग करने योग्य बनाने के लिए नहीं बनाया गया है। जीसीसी से घटकों को लेना मुश्किल है और अपने स्वयं के एप्लिकेशन के निर्माण के लिए इसका उपयोग करें। एलएलवीएम इस मुद्दे को "मॉड्यूलर और पुन: प्रयोज्य कंपाइलर और टूलचैन प्रौद्योगिकियों" के एक सेट का निर्माण करके अच्छी तरह से संबोधित करता है, जिसका उपयोग कोई भी कंपाइलर और भाषा उन्मुख सॉफ़्टवेयर बनाने के लिए कर सकता है।
LLVM कंपाइलर इन्फ्रास्ट्रक्चर कोड पर अनुकूलन और परिवर्तनों के प्रदर्शन के लिए विशेष रूप से उपयोगी है। इसमें कई उपकरण हैं जो अलग-अलग उपयोग करते हैं। llvm-prof एक प्रोफाइलिंग टूल है जो आपको प्रोग्राम हॉटस्पॉट की पहचान करने के लिए निष्पादन की प्रोफाइलिंग करने की अनुमति देता है। ऑप्ट एक ऑप्टिमाइज़ेशन टूल है जो विभिन्न ऑप्टिमाइज़ेशन पास (उदाहरण के लिए डेड कोड एलिमिनेशन) प्रदान करता है।
महत्वपूर्ण रूप से एलएलवीएम आपको अपने स्वयं के पास लिखने के लिए पुस्तकालयों के साथ प्रदान करता है। उदाहरण के लिए यदि आपको कुछ तर्कों पर एक सीमा जाँच जोड़ने की आवश्यकता होती है जो किसी प्रोग्राम के कुछ कार्यों में पारित हो जाते हैं, तो एक साधारण एलएलवीएम पास लिखना पर्याप्त होगा।
अपना पास लिखने के बारे में अधिक जानकारी के लिए, इस http://llvm.org/docs/WritingAnLLVMPass.html की जाँच करें