2016-10-10 7 views
7

जीसीसी में, स्मृति आदेश लक्ष्य में स्मृति के ब्लॉक के स्थान और आकार का वर्णन करता है। कमांड का उपयोग इस way पर किया जाना चाहिए।मेरी लिंकर फ़ाइल में मेमोरी विशेषता 'पी' क्या है?

MEMORY 
    { 
    name [(attr)] : ORIGIN = origin, LENGTH = len 
    ... 
    } 

अब, मैं एक लिंकर लिंकर एक रैम स्मृति खंड इस तरह से परिभाषित करने (Tricore माइक्रोकंट्रोलर्स, Tricore-ld के लिए एक जीसीसी आधारित लिंकर) द्वारा इस्तेमाल किया फ़ाइल है:

MEMORY 
    { 
    ram  (w!xp): org = 0x70000000, len = 32k 
    ... 
    } 

आप समझा सकते हैं क्या 'पी' का अर्थ है (डब्ल्यू! एक्स पी)? सामान्य रूप से 'पी' का क्या अर्थ है?

+1

वह लिंकर क्या है? – Droppy

+0

लिंकर ट्राइकोर माइक्रोकंट्रोलर (tricore-ld) के लिए एक जीसीसी आधारित लिंकर है। – djondal

+1

मुझे लगता है कि यह महत्वपूर्ण है; कृपया अपने टैग संपादित करें। – Droppy

उत्तर

1

एक मानक लिंकर स्क्रिप्ट नहीं, बिल्कुल एक कस्टम माइक्रो-नियंत्रक लक्ष्य के लिए असामान्य नहीं है। शायद एक लंबे समय पहले फोर्क किया। हालांकि इसे आसानी से रिवर्स-इंजीनियर किया जा सकता है, जीसीसी ने ऑब्जेक्ट फाइलों के लिए हमेशा ईएलएफ प्रारूप का उपयोग किया है। Google "elf सेक्शन विशेषताएँ", पॉप this hit पॉप आउट, यहां बहुत उपयोगी है।

तो आपको आवंटन, निष्पादन, लिखना, प्रोजेबिट मिल गया। आह, पी == प्रोगबिट्स। तो (डब्ल्यू! एक्सपी) निश्चित रूप से व्याख्या की जानी चाहिए "खंड लिखने योग्य है, निष्पादन योग्य नहीं है, प्रारंभिक डेटा निष्पादन योग्य छवि में संग्रहीत है"।

कुछ भी विशेष नहीं है, यह सी प्रोग्राम में पारंपरिक। डेटा अनुभाग है। पीबीएस की तुलना करें, पी नहीं।


जानकारी ओपी द्वारा कहा:

यूनिक्स ELF स्वरूप पर इस presentation से:

  • PROGBITS: इस कोड, डेटा, और डीबगर जानकारी सहित कार्यक्रम सामग्री रखती है।

  • नोबिट्स: प्रोबिट्स की तरह। हालांकि, इसमें कोई जगह नहीं है।

  • SYMTAB और DYNSYM: ये होल्ड प्रतीक तालिका।

  • STRTAB: यह एक स्ट्रिंग टेबल है, जैसा कि a.out में उपयोग किया जाता है।

  • आरईएल और आरईएलए: इन धारण स्थानान्तरण की जानकारी।

  • डायनामिक और हैश: इसमें गतिशील लिंकिंग से संबंधित जानकारी है।

+0

क्या आप कृपया बता सकते हैं कि प्रोजेबिट क्या है? – djondal

+0

मेमोरी जिसे निष्पादन योग्य छवि से प्रारंभ किया गया है। कोड और प्रारंभिक डेटा की तरह। 'int x = 42; 'प्रोजेबिट सेक्शन में जाता है,' int x; 'नहीं। http://stackoverflow.com/questions/9535250/why-is-the-bss-segment-required –

+0

यदि मैं सही ढंग से समझता हूं, तो यह निष्पादन योग्य कोड वाले अनुभागों से डीबग संबंधित जानकारी और वैश्विक डेटा वाले अनुभाग के बीच अंतर करने के लिए है? – djondal

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