2008-09-16 16 views

उत्तर

66

यहां प्रतीक सारणी के दो आम और संबंधित अर्थ हैं।

सबसे पहले, आपकी ऑब्जेक्ट फ़ाइलों में प्रतीक तालिका है। आमतौर पर, एक सी या सी ++ कंपाइलर एक स्रोत फ़ाइल में एक .obj या .o एक्सटेंशन के साथ एक एकल स्रोत फ़ाइल संकलित करता है। इसमें निष्पादन योग्य कोड और डेटा का संग्रह होता है जो लिंकर एक कार्यरत अनुप्रयोग या साझा लाइब्रेरी में संसाधित कर सकता है। ऑब्जेक्ट फ़ाइल में एक डेटा स्ट्रक्चर है जिसमें एक प्रतीक तालिका कहा जाता है जो ऑब्जेक्ट फ़ाइल में अलग-अलग आइटमों को उन नामों के लिए मानचित्र करता है जिन्हें लिंकर समझ सकता है। यदि आप अपने कोड से कोई फ़ंक्शन कॉल करते हैं, तो कंपाइलर ऑब्जेक्ट फ़ाइल में दिनचर्या का अंतिम पता नहीं डालता है। इसके बजाए, यह कोड में प्लेसहोल्डर मान डालता है और एक नोट जोड़ता है जो लिंकर को उन सभी ऑब्जेक्ट फ़ाइलों से विभिन्न प्रतीक तालिकाओं में संदर्भ देखने के लिए कहता है जो वहां प्रसंस्करण कर रहे हैं और वहां अंतिम स्थान चिपकाते हैं।

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

यदि आप और जानना चाहते हैं, तो मैं जॉन लेविन की उत्कृष्ट पुस्तक "लिंकर्स और लोडर्स" का सुझाव देता हूं। उस वस्तु फ़ाइल का प्रतीक तालिका सूची

एनएम [वस्तु फ़ाइल]

: link text

+0

हाय बेन, दूसरे मामले में, क्या आप निर्यात तालिका का जिक्र कर रहे हैं? यही है, निर्यात तालिका प्रतीक तालिका का एक विशेष मामला है? या ये असंबंधित अवधारणाएं हैं? – Pooven

+0

हाय। मेरा मानना ​​है कि यह किसी ऑब्जेक्ट फ़ाइल में नहीं है लेकिन उनसे संदर्भित है। दूसरा, क्या आप कृपया "अंतिम स्थान" से जो कुछ मतलब चाहते हैं, उसे थोड़ा और समझा सकते हैं? स्रोत कोड में भौतिक पता या अंतिम सापेक्ष पता। – zgulser

+0

क्या दूसरा आप शाखा के संदर्भ का उल्लेख करते हैं, या कॉल टेबल? –

21

संक्षेप में, यह उस नाम का मानचित्रण है जिसे आप स्मृति में अपने पते पर एक चर निर्दिष्ट करते हैं, जिसमें प्रकार, स्कोप और आकार जैसे मेटाडेटा शामिल हैं। यह कंपाइलर द्वारा प्रयोग किया जाता है।

सामान्य रूप से, केवल सी [++] * नहीं है। तकनीकी रूप से, इसमें हमेशा प्रत्यक्ष स्मृति पता शामिल नहीं होता है। यह इस बात पर निर्भर करता है कि संकलक किस भाषा, प्लेटफॉर्म इत्यादि को लक्षित कर रहा है।

+0

मुझे लगता है, यह "यह प्रत्यक्ष स्मृति पता हमेशा शामिल नहीं है" कहकर पते की सामग्री का उल्लेख करना बहुत महत्वपूर्ण था। – zgulser

8

प्रतीक तालिका किसी प्रोग्राम/इकाई में "प्रतीकों" की सूची है। प्रतीक अक्सर चर या कार्यों के नाम होते हैं। प्रतीक तालिका का उपयोग यह निर्धारित करने के लिए किया जा सकता है कि स्मृति चर या कार्य कहां स्थित होंगे।

12

लिनक्स में, आप आदेश का उपयोग कर सकते हैं।

0

प्रतीक तालिका एक महत्वपूर्ण डेटा के क्रम में इस तरह के चर नाम, समारोह के नाम, वस्तुओं, वर्ग, इंटरफेस, आदि के रूप में विभिन्न संस्थाओं की घटना के बारे में जानकारी स्टोर करने के लिए में बनाया है और compilers द्वारा बनाए रखा संरचना है

+0

लिंकर्स और असेंबलर भी प्रतीक तालिकाओं से निपटते हैं (अक्सर कंपाइलर वाले से सरल)। –

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