अधिकांश कंप्यूटर्स का फ्रंट एंड, कुछ मध्य कोड/कुछ प्रकार की संरचना, और बैकएंड होता है। जब आप अपना सी प्रोग्राम लेते हैं और क्लैंग का उपयोग करते हैं और संकलित करते हैं कि आप एक गैर-जेआईटी x86 प्रोग्राम के साथ समाप्त हो जाते हैं जिसे आप अभी चला सकते हैं, तो आप अभी भी फ्रंटेंड से मध्य तक बैकएंड तक चले गए हैं। जीसीसी के लिए भी चला जाता है, जीसीसी फ्रंटेंड से एक मध्यम चीज और बैकएंड तक जाता है। जीसीसी मध्यम बात व्यापक रूप से खुली नहीं है और एलएलवीएम की तरह उपयोग योग्य है।
अब एक चीज जो llvm के बारे में मजेदार/रोचक है, कि आप दूसरों के साथ नहीं कर सकते हैं, या कम से कम जीसीसी, यह है कि आप अपने सभी स्रोत कोड मॉड्यूल ले सकते हैं, उन्हें बाइटमोड के लिए संकलित कर सकते हैं, उन्हें एक बड़े में विलय कर सकते हैं बाइटकोड फ़ाइल, फिर प्रति फ़ाइल या प्रति फ़ंक्शंस ऑप्टिमाइज़ेशन के बजाय आपको अन्य कंपाइलर्स के साथ पूरी चीज को अनुकूलित करें, llvm के साथ आप अपनी पसंद के संकलित प्रोग्राम अनुकूलन के आंशिक स्तर का आंशिक प्राप्त कर सकते हैं। तो आप उस बाइटकोड को ले सकते हैं और लक्ष्यों को असेंबलर को निर्यात करने के लिए llc का उपयोग कर सकते हैं। मैं आमतौर पर एम्बेडेड करता हूं इसलिए मेरे पास अपना स्टार्टअप कोड है जो मैं उसके चारों ओर लपेटता हूं लेकिन सिद्धांत में आपको उस असेंबलर फ़ाइल को लेना और जीसीसी संकलन के साथ और इसे लिंक करने और इसे चलाने में सक्षम होना चाहिए। gcc myfile.s -o myfile।मुझे लगता है कि llvm टूल्स को ऐसा करने का कोई तरीका है और binutils या gcc का उपयोग नहीं करना है, लेकिन मैंने समय नहीं लिया है।
मैं LLVM तरह हमेशा एक क्रॉस संकलक है, क्योंकि यह, जीसीसी के विपरीत आप न प्रत्येक लक्ष्य के लिए एक नया एक संकलन और प्रत्येक लक्ष्य के लिए बारीकियों से निपटने के लिए। मुझे नहीं पता कि मेरे पास जेआईटी चीज के लिए कोई उपयोग है जो मैं कह रहा हूं कि मैं इसे क्रॉस कंपाइलर और देशी कंपाइलर के रूप में उपयोग करता हूं।
तो अपने पहले मामले सामने, मध्य, अंत है और इस प्रक्रिया को आप से छिपा हुआ है आप स्रोत के साथ शुरू करने और एक द्विआधारी मिलता है, किया। दूसरा मामला यह है कि अगर मैं सामने और बीच में सही समझता हूं और बीच में प्रतिनिधित्व करने वाली कुछ फाइलों के साथ रुक जाता हूं। फिर मध्य से अंत (विशिष्ट लक्ष्य प्रोसेसर) रनटाइम पर समय पर हो सकता है। बैकएंड में अंतर, दो मामले की मध्य भाषा का वास्तविक समय निष्पादन, संभवतः मामले के बैकएंड से अलग है।
स्रोत
2010-08-20 00:44:00
से तो JIT रूप LLVM उपयोग करने के लिए आप अपने आवेदन में यह लिंक करने के लिए, सही है? क्या ऐसे अनुप्रयोग हैं जो ऐसा करते हैं? – zaharpopov