2015-12-19 14 views
7

मैं वास्तव में एम्बेडेड प्रोग्रामिंग के लिए स्विफ्ट का उपयोग करना चाहता हूं क्योंकि मुझे लगता है कि यह सी ++ के लिए एक बेहतर बेहतर प्रतिस्थापन है, मैं जिस प्रोसेसर का उपयोग कर रहा हूं वह एक एआरएम कॉर्टेक्स-एम 4 एफ (http://www.ti.com/tool/ek-tm4c123gxl) है। स्विफ्ट कंपाइलर page पर देखकर, यह कहता है कि आप त्वरित स्रोत से एलएलवीएम आईआर उत्पन्न कर सकते हैं और फिर मैं एलएलवीएम के साथ संकलन पार करने की उम्मीद कर रहा था। क्या यह संभव होगा?नंगे धातु के लिए स्विफ्ट कंपाइलर का उपयोग कर?

उत्तर

3

स्विफ्ट के साथ मशीन कोड उत्पन्न करना निश्चित रूप से संभव है। असल में, डिफ़ॉल्ट रूप से जब आप एक्सकोड में स्विफ्ट प्रोग्राम को संकलित करते हैं या स्विफ्टक कमांड-लाइन कंपाइलर के साथ, उत्पादित निष्पादन योग्य फ़ाइल मशीन-कोड से बना है।

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

जहां तक ​​एआरएम के लिए क्रॉस-कंपाइलिंग है, मुझे यकीन नहीं है कि यह स्विफ्टक टूल के साथ कैसे काम करता है, लेकिन यदि आप एक एक्सकोड आईओएस प्रोजेक्ट बनाते हैं, तो यह एआरएम निष्पादन योग्य बनाता है। मुझे यकीन है कि स्विफ्टक अनुपालन में एआरएम निष्पादन योग्य बनाने के लिए आवश्यक सभी विकल्प हैं।

हालांकि, एक पकड़ जिसे मैं सोच सकता हूं, यह है कि स्विफ्ट की कार्यक्षमता बहुत सारी एप्पल के ढांचे पर निर्भर करती है। हालांकि, अब स्विफ्ट को खुले तौर पर सोर्स किया गया है, धीरे-धीरे सभी प्रकार की चीजों के लिए अधिक शुद्ध त्वरित पुस्तकालय बनते हैं।

+1

सेब ढांचे के साथ अधिकांश निर्भरता चली गई है, फाउंडेशन को तेजी से फिर से कार्यान्वित किया गया है और यह भी खुले खुले हैं। –

+0

स्विफ्ट को उद्देश्य-सी रनटाइम की आवश्यकता होती है, जो एम्बेडेड संदर्भ में काफी बड़ा है (कम से कम 600 केबी [इस व्यक्ति] के अनुसार (http://xmaker.mx/archives/14) जिसने उद्देश्य-सी को SiLabs कॉर्टेक्स पर काम किया -M4)। अगर आपको जलने के लिए बाहरी स्मृति मिल गई है तो यह एक मुद्दा कम है। –

+0

@ टोनीके www.swift.org, स्विफ्ट अब उद्देश्य सी पर निर्भर करता है। इसे खुले –

0

मैं इस संभावना की खोज कर रहा था (एम्बेडेड अनुप्रयोगों के लिए स्विफ्ट का उपयोग कर)। चूंकि स्विफ्ट को "हैलो, वर्ल्ड!" के स्थिर संकलन के बाद, रनटाइम की आवश्यकता होती है (उबंटू पर, x86-64 नवीनतम स्विफ्ट 3.0.2 का उपयोग करके) परिणाम बाइनरी आकार 5 मेगाबाइट से अधिक था, जो "छोटे" एआरएम नियंत्रकों (जैसे कॉर्टेक्स-एम 0) पर एक मुद्दा हो सकता है।

संबंधित मुद्दे