अपोलो -11: लिंकर के बजाय समावेशन का उपयोग करना


9

हाल ही में डिजीटल और एक रेपो में बदल गया, मूल अपोलो 11 मार्गदर्शन कंप्यूटर स्रोत कोड जीथब पर देखने के लिए उपलब्ध कराया गया है ।

में MAIN.agc , रेपो लेखक टिप्पणियों वे कहते हैं कि

विशाल अखंड स्रोत कोड को छोटे, अधिक प्रबंधनीय विखंडू - अर्थात, व्यक्तिगत स्रोत # फ़ाइलों में विभाजित करें।

थोड़ी देर बाद, लेखक बताता है

यह यथोचित रूप से पूछा जा सकता है कि स्रोत के हजारों लाइनों को सम्मिलित करने के माध्यम से दसियों लाइनें क्यों जुड़ती हैं, बजाय इसके कि स्रोत फ़ाइलों को व्यक्तिगत रूप से इकट्ठा किया जाए और फिर उन्हें निष्पादन योग्य बनाने के लिए लिंक किया जाए। इसका उत्तर यह है कि मूल विकास टीम में कोई लिंकर नहीं था।

मुझे पता है कि लिंकर्स क्या हैं और मैं उनमें से बात को समझता हूं- लेकिन मैंने कभी भी वाक्यांश के बारे में नहीं सुना है (जहां तक ​​एएसएम जाता है) "शामिल किए जाने के माध्यम से"।

इसका क्या मतलब है? यह देखते हुए कि लिंकर्स प्रोग्रामिंग में एक बड़ी बात है, मैं उत्सुक हूं कि "इनक्लूजन के माध्यम" से लिंकर्स का यह प्रतिस्थापन क्या है और यह कैसे काम करता है।


7
"शामिल किए जाने के माध्यम से शामिल" का एक उदाहरण #includeनिर्देश में होगा C। दूसरे शब्दों में, कोड के बजाए घटकों पर संकलित किए जाने वाले कोड को एक साथ जोड़ा जाता है, ऐसा लगता $है कि एक बड़े स्रोत फ़ाइल को उत्पन्न करने के लिए अंकन में उस फ़ाइल की सामग्री शामिल है। उस एक बड़े स्रोत फ़ाइल को तब एक इकाई के रूप में संकलित किया जाता है।
डेविड अरनो

1
@DavidArno आपकी टिप्पणी बोर्ड पर वर्तमान में दिए गए दो उत्तरों में से एक बेहतर उत्तर की तरह लगती है।
रॉस प्रेसर

जवाबों:


18

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


-2

साधारण समावेशन लिंकिंग के साथ तुलना कैसे करता है?

इतना सरल समावेश #include "someCFile.c" का उपयोग करके पूरा किया जाता है।

डिफ़ॉल्ट रूप से लिंकर्स एक रनटाइम लाइब्रेरी जोड़ देगा। समावेश के साथ, यह शामिल करना होगा।

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

प्रसंस्करण गति की अवधि में, समावेशन संभवत: थोड़ा तेज है (निश्चित रूप से गतिशील रूप से जुड़े पुस्तकालयों के मामले में), हालांकि यह उतना लचीला नहीं है, वे कई अनुप्रयोग हैं जो एक ही पुस्तकालय को साझा नहीं कर सकते हैं।

द्विआधारी आकार को ध्यान में रखते हुए, समावेशन बड़ा होगा।

संकलन समय को ध्यान में रखते हुए, इसमें शामिल होने में अधिक समय लगेगा।

नासा नेविगेशन कंप्यूटर के लिए सरल समावेशन ठीक था क्योंकि नेविगेशन कंप्यूटर केवल एक कार्यक्रम चलाता था।


2
मुझे नहीं लगता कि यह सवाल का जवाब "यह क्या है और यह कैसे काम करता है"।
टॉफ्रो

tofro: मैंने व्याख्या की "इसका क्या मतलब है?" द्विआधारी आकार और निष्पादन की गति के संदर्भ में व्यावहारिक दृष्टिकोण से इसका क्या अर्थ होगा।
रॉबर्ट बैरन

"समावेश बड़ा होगा" - यह मत करो। यदि कोड में है, तो यह अंतरिक्ष में है और इसका उपयोग करता है - भले ही यह बाइनरी में कैसे हो। संकलन समय पर भी सहमत न हों - एक पूर्ण निर्माण समान समय लेने जा रहा है। वृद्धिशील निर्माण करते समय आपको केवल गति प्राप्त होती है, और मुझे संदेह है कि यह
60 के दशक

निष्पादन की गति तेज होगी क्योंकि न्यूनतम ऑपरेटिंग सिस्टम के सभी कार्य निष्पादन योग्य हैं, इसलिए ये केवल अवरोधों का उपयोग करने के विपरीत कॉल हैं (मैं एक न्यूनतम ऑपरेटिंग सिस्टम जैसे कि डॉस पर विचार कर रहा हूं जहां यह 8086 के इंटरप्ट का उपयोग करता है सिस्टम कॉल करने के लिए)। इसके अलावा, जैसा कि पूरे ऑपरेटिंग सिस्टम को शामिल किया जाएगा, यह अधिक स्थान का उपभोग करेगा जब यह नहीं है और संकलन समय में जोड़ देगा।
राबर्ट बैरन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.