2011-08-31 11 views
13

मैं एक असेंबली पुस्तक पढ़ रहा हूं। पुस्तक बताती है कि कंप्यूटर की स्मृति में .text और .data अनुभाग हैं। पुस्तक में एक उदाहरण निम्नलिखित स्रोत कोड का भी उपयोग करता है।हमें असेंबली में .data और .text सेक्शन को परिभाषित करने की आवश्यकता क्यों है?

[SECTION .data] 

[SECTION .text] 

के बाद से ऊपर कोड स्निपेट विधानसभा में लिखा है, मैं एक प्रश्न है।

क्या करें .डेटा और .text कोड भौतिक स्मृति में अलग हो गए हैं (यदि ऐसा है तो क्यों? और सीपीयू देखभाल करता है?)? या यह सिर्फ हमें (मानव) विधानसभा भाषा में अलग करने के लिए है?

उत्तर

15

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

+0

// तो ... क्या यह ओएस निर्दिष्ट है? मान लीजिए कि मैं अपना ओएस लिख रहा हूं (ऐसा करने वाला नहीं :)), क्या मुझे इस सम्मेलन का पालन करने की ज़रूरत है? – Moon

+0

उन्हें अलग रखना बुद्धिमान होगा, क्योंकि तब आप उस अनुभाग से संबंधित प्रत्येक अनुभाग में चीजें कर सकते हैं। उदाहरण के लिए, आप प्रोग्राम के इन विभिन्न हिस्सों में अलग-अलग मेमोरी स्वैप इन/आउट नियम, मेमोरी सुरक्षा कोड और संगत स्टोरेज प्रवर्तन डिजाइन करना चाह सकते हैं। – Pete855217

+1

हाँ मुझे लगता है कि यह ओएस विशिष्ट है और आपको अपने स्वयं के ओएस में इस सम्मेलन का पालन करने की आवश्यकता नहीं है। अब भी ओएस रीड-ओनली से पढ़ने-लिखने और लिखने के लिए टेक्स्ट सेक्शन को बदलने की इजाजत देता है उदाहरण के लिए डिबगिंग एप्लिकेशन या कुछ डिबगिंग एपीआई http://msdn.microsoft.com/en-us/library/ms681674(v=vs के दौरान। 85) .aspx। लेकिन आपके ओएस में सामान्य उपयोग के लिए मैं इस नियम का पालन नहीं करूंगा। – Zuljin

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