कोड सेक्शन को टेक्स्ट सेक्शन क्यों कहा जाता है?


14

एक निष्पादन योग्य के अनुभाग में कोड होता है जिसे कभी-कभी .textअनुभाग कहा जाता है । खंडित मेमोरी आर्किटेक्चर में, एक खंड को कोड के रूप में मैप किया जाता है, जिसे कभी-कभी पाठ खंड कहा जाता है। यूनिक्स त्रुटि संदेश "पाठ फ़ाइल व्यस्त" ( ETXTBSY) का अर्थ है "यह फ़ाइल एक प्रोग्राम है जिसे निष्पादित किया जा रहा है"।

पाठ का अर्थ निष्पादन योग्य (मशीन) कोड कैसे आया ?

एक आदर्श उत्तर होगा: शब्द और उसके अर्थ के बीच संबंध की व्याख्या करना; मूल के लिए एक उद्धरण प्रदान करें या कम से कम शब्द का इतिहास; कुछ विचार दें कि कौन से समुदाय इसका उपयोग करते हैं।


.textएक विधानसभा निर्देश है। असेम्बली पाठ है।
ऑस्टिन हेन्ले

6
इसी तरह का सवाल 3 साल पहले StackOverflow पर पूछा और जवाब दिया गया: stackoverflow.com/questions/1282506/…
Stephen C

@StephenC लिंक के लिए धन्यवाद। "टेक्स्ट सेगमेंट" को देखकर आसान लगता है, मैंने ज्यादातर "टेक्स्ट सेक्शन" के साथ प्रयास किया और यह नहीं हुआ। इसलिए यह जीई दिनों में कम से कम वापस आता है, लेकिन यह अभी भी स्पष्ट नहीं है कि अर्थ कैसे स्थापित हुआ।
गाइल्स का SO- बुराई पर रोक

जवाबों:


5

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

प्रथम श्रेणी के कार्यों के बारे में ग्रिफिन की टिप्पणी को संबोधित करने के लिए, निम्न अजगर 3 कोड पर विचार करें:

def counter():
    x = 0
    def increment(y):
        nonlocal x
        x += y
        print(x)
    return increment

वास्तव में incrementआंतरिक रूप से कुछ देखने के लिए आप जिस कोड को निष्पादित करते हैं, वह इस प्रकार है:

self.func_dict['x'] += y
print(self.func_dict['x'])

उस निष्पादन योग्य कोड को ROM में डाला जा सकता है। यह कार्यक्रम के पूरे निष्पादन में कभी नहीं बदलता है, चाहे आप कितनी बार कॉल करें counter()। क्या करता है परिवर्तन है selfसूचक और उसके सदस्य चर। उन में डाला जाना चाहिए .data। जब आप return increment, आप वास्तव में एक वृद्धि समारोह वस्तु का एक नया उदाहरण लौटा रहे हैं। आप हर बार गतिशील रूप से नए निष्पादन योग्य कोड नहीं बना रहे हैं। कोड अपने आप में अपरिवर्तनीय है, भले ही इसके लिए सूचक न हो।

एकमात्र कोड जिसे अनुभाग में संग्रहीत किया जाना चाहिए, .dataवह उस द्वारा उत्पन्न होता है eval(), क्योंकि यह प्रोग्राम के प्रारंभ में कंपाइलर या JIT कंपाइलर को नहीं जानता है। हालांकि, यहां तक ​​कि कोड अपरिवर्तनीय है। यदि आप स्ट्रिंग eval()बदलते हैं और फिर से कॉल करते हैं, तो आप पिछली बार आपके द्वारा कॉल किए गए कोड को नहीं बदल रहे हैं, आप कोड का eval()एक नया सेट बना रहे हैं।

हालांकि प्रोग्रामिंग मॉडल इसे इस तरह का महसूस करवा सकता है जैसे कि कोड उत्परिवर्तनीय है, प्रोसेसर निर्देश स्तर पर वास्तविक आत्म संशोधित कोड खतरनाक है और शायद ही कभी प्रक्रिया संदर्भ स्विचिंग जैसे ओएस वूडू विषयों के बाहर पाया जाता है।


तो क्या होता है जब आप एक कार्यात्मक भाषा का उपयोग कर रहे हैं, यह विचार करते हुए कि कोड उत्परिवर्तित / प्रथम श्रेणी है?
ग्रिफिन

1
प्रथम श्रेणी के कार्यों के बारे में मेरा संपादन देखें।
कार्ल बेवलफेल्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.