यदि आप बूट लोडर लिख रहे हैं, तो आप अनिवार्य रूप से कुछ भी नहीं शुरू कर रहे हैं: कोड का एक छोटा हिस्सा स्मृति में लोड किया जाता है, और निष्पादित किया जाता है। आप सी ++ में अपने अधिकांश बूट लोडर को लिख सकते हैं, लेकिन आपको पहले अपने स्वयं के सी ++ रनटाइम पर्यावरण को बूटस्ट्रैप करने की आवश्यकता होगी।
विधानसभा वास्तव में पहले चरण के लिए एकमात्र विकल्प है, क्योंकि आपको उच्च स्तर के कुछ भी चलाने के लिए एक समझदार वातावरण स्थापित करने की आवश्यकता है। सी कोड चलाने के लिए पर्याप्त करना काफी सरल है - आपको इसकी आवश्यकता है:
- सही स्थान पर लोड कोड और डेटा;
- डेटा क्षेत्र का एक अतिरिक्त हिस्सा हो सकता है जो शून्य-प्रारंभिक होना चाहिए;
- आपको ढेर के लिए स्मृति के उपयुक्त क्षेत्र में स्टैक पॉइंटर को इंगित करने की आवश्यकता है।
फिर आप उचित बिंदु पर कोड में कूद सकते हैं (उदा।main()
) और उम्मीद है कि मूल भाषा सुविधाएं काम करेगी। के रूप में इसे और अधिक initialisation यहाँ की जरूरत है, (यह है कि लागू किया गया है हो सकता है या में जुड़े हुए मानक पुस्तकालय के किसी भी सुविधाओं इस स्तर पर अतिरिक्त initialisation आवश्यकता हो सकती है संभव है।)
एक उपयुक्त वातावरण सी ++ के लिए जा रही अधिक प्रयास की आवश्यकता है , और इसमें मूल भाषा सुविधाएं भी हैं जिन्हें रनटाइम समर्थन की आवश्यकता होती है (फिर से, यह लाइब्रेरी सुविधाओं पर विचार करने से पहले है)। इनमें शामिल हैं:
- स्थिर रचनाकार चल रहे हैं;
- स्मृति आवंटन
new
और delete
का समर्थन करने के लिए;
- रन-टाइम प्रकार की जानकारी (आरटीटीआई) के लिए समर्थन;
- अपवादों के लिए समर्थन;
- शायद कुछ अन्य चीजें जिन्हें मैं उल्लेख करना भूल गया हूं। जब तक सेल्सियस वातावरण तैयार होकर चलने लगे इनमें से
कोई नहीं होगा, इसलिए कोड संभालती है कि इन या बल्कि कोडांतरक से सी में लिखा जा सकता है (यहां तक कि सी के ++ कि इसके बाद के संस्करण का उपयोग नहीं करता है एक सबसेट में विशेषताएं)।
(समान सिद्धांत एम्बेडेड सिस्टम में लागू होते हैं, और सी ++ का उपयोग करने के लिए ऐसी प्रणालियों के लिए असामान्य नहीं है, लेकिन केवल सीमित तरीके से - जैसे कोई अपवाद और/या आरटीटीआई नहीं क्योंकि रनटाइम समर्थन लागू नहीं किया गया है।)
स्रोत
2010-07-17 23:45:37
संभव डुप्लिकेट [सी या सी ++ में बूटलोडर लिखने के लिए?] (Http://stackoverflow.com/questions/1629123/to-write-a-bootloader-in-c-or-c) – sbi
मेरा मानना है इसमे अंतर है। यह पूछता है कि मुझे कैसे आगे बढ़ना चाहिए और दूसरा सी और सी ++ के बीच चुनाव के बारे में है। लेकिन कुछ ओवरलैप है। – kriss