डीएल अवधारणा के अलावा जो रन-टाइम पर लोडिंग/अनलोडिंग विधियों या कार्यों की क्षमता प्रदान करता है, मुझे आश्चर्य है कि एक कंपाइलर कभी कुछ कह सकता है, ठीक है क्योंकि कोड के इस विशेष भाग को कोड सेगमेंट में काफी मात्रा में स्थान लगता है और प्रोग्राम निष्पादन के दौरान इस बिंदु के बाद कभी भी उपयोग नहीं किया जा रहा है, प्रोग्राम निष्पादन के दौरान उस विशेष बिंदु तक पहुंचने के बाद कोड सेगमेंट के उस भाग को अनलोड करने के लिए कुछ कोड उत्पन्न करना अच्छा होगा ताकि कोड सेगमेंट द्वारा ली गई कुल जगह कम हो जाए। क्या यह सिर्फ काल्पनिक है या ऐसा हो सकता है?क्या एक कंपाइलर निष्पादन के दौरान कोड सेगमेंट के हिस्सों को अनलोड करने के लिए कोड उत्पन्न कर सकता है?
उत्तर
एक कंपाइलर कुछ भी कर सकता है, जब तक वह मानक का उल्लंघन नहीं करता है। अगर यह पता लगाया जा सकता है कि कोड को फिर कभी नहीं कहा जाता है, तो यह इसे पूरी तरह से हटा सकता है।
यह इसे एक छोटे स्टब फ़ंक्शन के साथ भी बदल सकता है जो कोड को फिर से लोड करेगा, इसकी आवश्यकता थी।
लेकिन आपको कभी भी यह देखने की संभावना नहीं होगी कि एक आधुनिक ओएस में ओएस स्वयं कवर के तहत उस क्षमता को प्रदान करता है।
ऑपरेटिंग सिस्टम (कम से कम आम वाले) आपके भौतिक पृष्ठों को स्वैप कर देंगे जब स्मृति कम हो जाती है, और उन्हें तब तक पुनः लोड नहीं किया जाएगा जब तक उन्हें आवश्यकता न हो (आमतौर पर उन्हें एक्सेस करने का प्रयास करते समय पेज गलती से)।
मुझे एक कंपाइलर नहीं पता जो यह करता है, लेकिन इसमें कोई नियम निषिद्ध नहीं है। यदि संकलक साबित कर सकता है कि ऐसा करने से प्रोग्राम के अर्थशास्त्र को नहीं बदला जाएगा, तो इसे नियम के तहत अनुमति दी जाती है।
हालांकि आमतौर पर यह आवश्यक नहीं है, क्योंकि वर्चुअल मेमोरी से जुड़े पेजफाइल तंत्र के हिस्से के रूप में अप्रयुक्त कोड पहले से ही स्वैप हो सकता है। (और क्योंकि आप शायद केवल कुछ केबी मेमोरी स्पेस को बचाएंगे)
निश्चित रूप से। overlaying नामक एक तकनीक है जो विभिन्न समय पर अलग-अलग पता स्थान में अलग-अलग कोड लोड करती है। कभी-कभी यह मैन्युअल रूप से किया जाता था, अन्य बार कंपेलरों ने मदद की। कभी-कभी लोडिंग सॉफ्टवेयर में किया जाता है, कभी-कभी हार्डवेयर में (पता मल्टीप्लेक्सिंग के साथ, ताकि उदाहरण के दौरान बूट समय के दौरान एक एड्रेस स्पेस एक बिट चिप से पढ़ता है, लेकिन बूट के बाद यह रैम या इसके बजाय एक अलग रोम को संबोधित करने के लिए स्विच करता है)।
कंप्यूटर पर कम स्मृति होने पर ओवरलेइंग अधिक आम था, उदा। डॉस के प्रारंभिक दिनों में जहां आपके पास 640K था और अक्सर यह भी नहीं था। इन दिनों इसमें अभी भी एम्बेडेड सिस्टम के लिए एप्लिकेशन हैं जहां स्मृति और/या पता स्थान प्रीमियम पर हैं।
हां, विंडोज डिवाइस ड्राइवर्स इस तकनीक का उपयोग करते हैं। LE file प्रारूप में कुछ कोड खंडों को अस्वीकार्य के रूप में चिह्नित किया गया है। ओएस निश्चित रूप से कोड सेगमेंट को स्वैप करने का निर्णय ले सकता है जिसका उपयोग लंबे समय तक नहीं किया गया है।
हालांकि, यह कड़ाई से बोलने के लिए कंपाइलर के लिए क्षेत्र नहीं है। यह ज्यादातर लिंकर/लोडर/ओएस है जो इसे प्रभावित करता है।
एक्सईई और डीएलएल द्वारा उपयोग किए जाने वाले अधिक सामान्य पीई प्रारूप में छोड़ने योग्य कोड खंड भी मौजूद हैं। कंपाइलर निश्चित रूप से यहां एक भूमिका है; यह विशिष्ट खंडों में कार्य करता है। लेकिन इसमें थोड़ी सी बात है, जैसा आपने नोट किया था: एक ओएस उन सभी पठनीय पृष्ठों को त्याग सकता है जो पुनः लोड करने योग्य हैं, और उन पृष्ठों को त्याग देंगे जिन्हें हाल ही में छुआ नहीं गया है। – MSalters
- 1. एप्लिकेशन के दौरान सबसे अनुकूलित कोड उत्पन्न करने के लिए .NET JIT कंपाइलर को मजबूर करना
- 2. एक कंपाइलर द्वारा उत्पन्न असेंबली कोड को अनुकूलित करने के लिए कुछ सुझाव क्या हैं?
- 3. कंपाइलर ऑटोबॉक्सिंग के लिए कौन सा कोड उत्पन्न करता है?
- 4. जावा संकलन - क्या मेरे कोड के हिस्सों को अनदेखा करने के लिए संकलक को बताने का कोई तरीका है?
- 5. आइकन उत्पन्न करने के लिए PHP कोड
- 6. क्या मैटलैब जावा स्रोत कोड उत्पन्न कर सकता है?
- 7. सी कोड उत्पन्न करने और एक पैकेट भेजने के लिए
- 8. कोड निष्पादन के दौरान सूचना की रिपोर्टिंग: सर्वश्रेष्ठ डिजाइन
- 9. आईपैड या फोन पर कोड के अंदर निष्पादन निष्पादन समय को मापने के लिए कोड?
- 10. कोड समीक्षाओं के दौरान ध्यान केंद्रित करने के लिए युक्तियाँ
- 11. रूबी/रेल: मचान उत्पन्न करने के लिए कोड कहां है
- 12. कोड के कुछ हिस्सों को संशोधित करने से अविश्वसनीयता को रोका जा सकता है?
- 13. क्या जावास्क्रिप्ट आईओएस के लिए "अन्य निष्पादन योग्य कोड" है?
- 14. क्या php 5.3 के लिए कोड निष्पादित करने के लिए कोई कंपाइलर/दुभाषिया है?
- 15. एक मार्शल कोड ऑब्जेक्ट के पाइथन निष्पादन (
- 16. एक कंपाइलर में इंटरमीडिएट कोड उत्पन्न करना। सशर्त से निपटने के दौरान एक एएसटी या पार्स पेड़ हमेशा जरूरी है?
- 17. एएसटी से कोड उत्पन्न करने के लिए सर्वश्रेष्ठ डिजाइन?
- 18. कंपाइलर अनुकूलन कोड तर्क को कैसे प्रभावित कर सकता है?
- 19. कोड स्निपेट निष्पादन के लिए उपकरण
- 20. क्या निजी सदस्यों के लिए हैश कोड एक नया हैश कोड उत्पन्न करना संभव है?
- 21. क्या सजावटी के लिए कोड उत्पन्न करने के लिए एक्लिप्स में शॉर्टकट है?
- 22. लेटेक्स और लिस्टिंग: कोड के कुछ हिस्सों को हाइलाइट करना
- 23. क्या सी # कंपाइलर इस कोड को अनुकूलित करने के लिए पर्याप्त स्मार्ट है?
- 24. क्या यह सुनिश्चित करने के लिए एक स्वचालित तरीका है कि कोड के सभी हिस्सों का परीक्षण किया गया है?
- 25. ऑब्जेक्ट इनलाइज़र कोड उत्पन्न करने के लिए डीबगर विजुअलाइज़र
- 26. जावास्क्रिप्ट के लिए कोई मूल मशीन कोड कंपाइलर है?
- 27. टी 4 टेम्पलेट्स - सी ++ कोड उत्पन्न करने के लिए उपयुक्त?
- 28. जावा में कंपाइलर बनाने के लिए मैं कोड कैसे पार्स कर सकता हूं?
- 29. कोड उत्पन्न करने के लिए रेजर का उपयोग करें?
- 30. वितरण उत्पन्न करने के लिए कोड में सुधार
+1 दिलचस्प प्रश्न – delnan