एलएलवीएम आईआर क्रॉस-प्लेटफ़ॉर्म हो सकता है, जिसमें स्पष्ट अपवाद दूसरों के सूचीबद्ध हैं। हालांकि, इसका मतलब यह नहीं है कि क्लैंग क्रॉस-प्लेटफ़ॉर्म कोड उत्पन्न करता है। जैसा कि आप ध्यान देते हैं, प्रीप्रोसेसर लगभग सार्वभौमिक रूप से कोड के हिस्सों को सी/सी ++ कंपाइलर तक प्लेटफ़ॉर्म के आधार पर पास करने के लिए उपयोग किया जाता है। यहां तक कि जब यह उपयोगकर्ता कोड में नहीं किया जाता है, तब भी कई सिस्टम शीर्षकों में प्लेटफॉर्म-विशिष्ट, जैसे typedef
एस शामिल हैं। उदाहरण के लिए, यदि आप size_t
का उपयोग करके प्लेटफार्म पर size_t
पर 3212 है, तो एलएलवीएम आईआर अब इसके लिए i32
का उपयोग करता है, और नरक में कोई रास्ता नहीं है, आप इसे ठीक करने के लिए अभियंता को उलट सकते हैं।
Google की Portable Native Client प्रोजेक्ट (लिंक के लिए धन्यवाद @ विल्ग्लिन), अगर मैं इसे सही ढंग से समझता हूं, तो सभी लक्षित प्लेटफार्मों के लिए एबीआई को ठीक करके पोर्टेबिलिटी प्राप्त करता है। तो इस अर्थ में, यह उपर्युक्त मुद्दों को हल नहीं करता है: एलएलवीएम आईआर एक अलग एबीआई के साथ मंच पर पोर्टेबल नहीं है। एकमात्र कारण यह अधिक पोर्टेबल है कि ग्राहक एक परत प्रदान करते हैं जो पीएनएसीएल एबीआई से वास्तविक एबीआई से मेल खाता है। दूसरे शब्दों में, पीएनएसीएल कोड कई प्लेटफॉर्म पर पोर्टेबल नहीं है, "पीएनएसीएल वीएम" है।
तो, नीचे पंक्ति: यदि आप बहुत सावधान हैं, तो आप कई प्लेटफार्मों में एलएलवीएम आईआर का उपयोग कर सकते हैं, लेकिन एबीआई मतभेदों पर सार के लिए महत्वपूर्ण अतिरिक्त काम (जो क्लैंग नहीं करता) के बिना नहीं।
यदि वस्तु पूरी तरह आत्मनिर्भर है, तो इसे एक अलग मंच पर व्याख्या किया जा सकता है। लेकिन चूंकि एबीआई अलग होगा, इसलिए बाकी प्रणाली का उपयोग करने में मुश्किल होगी। –
मुझे लगता है कि http://llvm.org/docs/LangRef.html पूरी तरह से प्लेटफार्म स्वतंत्र होगा। वास्तव में 'बाकी प्रणाली का उपयोग करके हार्ट टाइम' का क्या मतलब है? – Tim
@Tim - क्या कोड किसी भी ओएस कॉल का उपयोग करेगा? वे कितने पोर्टेबल हैं? –