2012-04-08 11 views
10

में मॉड्यूल, असेंबली, हेडर, मैं सी # 3.0 के साथ सीएलआर पढ़ रहा हूं और मैं असेंबली, मॉड्यूल और हेडर पर प्रतिबिंबित कर रहा हूं हालांकि चीजें जटिल हो गई हैं। यह मैं क्या समझ में आ लेकिन अगर बहुत अच्छा होगा अगर किसी को बातें थोड़ा और अधिक स्पष्ट कर सकते हैं:सीएलआर

  1. मॉड्यूल जो आईएल कोड और मेटाडाटा टेबल शामिल Csc.exe का परिणाम है। मेटाडाटा टेबल तीन अलग-अलग टेबल जो कर रहे हैं शामिल हैं: "। TypeRef, ModuleRef, MemberRef, आदि"

    इस तरह के "ModuleDef, typedef, PropertyDef, MethodDef, EventDef, FieldDef" जैसे
  2. संदर्भ टेबल्स के रूप में
    • परिभाषा टेबल्स
    • प्रकट टेबल्स **
  3. विधानसभाओं कंटेनर जो इस प्रकार की छवियों, डॉक्स, पीडीएफ, आदि

  4. पीई फ़ाइलों को पोर्टेबल निष्पादन के लिए खड़ा है फ़ाइलें हो सकती हैं, जैसे कई मॉड्यूल के साथ ही संसाधनों को शामिल कर रहे हैं .EXE या डीएलएल। इन फ़ाइलों में पीई 32 या पीई 32 + हेडर, सीएलआर हेडर, मेटाडाटा, आईएल कोड है।

पुस्तकों का कहना है विधानसभा एक कंटेनर मॉड्यूल के होते हैं और यह भी कहते हैं प्रबंधित मॉड्यूल

है

प्रबंधित मॉड्यूल:

कोई प्रबंधित मॉड्यूल एक मानक 32-बिट माइक्रोसॉफ्ट विंडोज पोर्टेबल है निष्पादन योग्य (पीई 32) फ़ाइल या एक मानक 64-बिट विंडोज पोर्टेबल निष्पादन योग्य (पीई 32 +) फ़ाइल जिसके लिए सीएलआर निष्पादित करने की आवश्यकता है।

रिचटर, जेफरी (2010-02-05)। सी # के माध्यम से सीएलआर (जलाने के स्थान 696-697)। ओर्ली मीडिया - ए किंडल संस्करण। सभा के

परिभाषा:

एक विधानसभा में एक या अधिक मॉड्यूल या संसाधन फ़ाइलों की एक तर्कसंगत समूहन है।

रिचटर, जेफरी (2010-02-05)। सी # के माध्यम से सीएलआर (जलाने के स्थान 766-767)। ओर्ली मीडिया - ए किंडल संस्करण।

enter image description here

तो ऐसा लगता है कि प्रबंधित मॉड्यूल वास्तव में छवि एक ही पुस्तक से लिया में विधानसभा का हिस्सा हैं।

PE32 हेडर विधानसभाओं के हैं, फिर भी लेखक भी यह मॉड्यूल प्रबंधित करने के साथ-साथ अंतर्गत आता है कहते हैं, आदि

क्या जुदाई यहाँ है? उन्होंने मॉड्यूल और असेंबली का आदान-प्रदान क्यों किया, यह भी सोचा कि वे काफी अलग दिखते हैं।

एक प्रबंधित पीई फ़ाइल में चार मुख्य भाग होते हैं: पीई 32 (+) हेडर, सीएलआर हेडर, मेटाडेटा और आईएल।पीई 32 (+) हेडर मानक जानकारी है जो विंडोज की अपेक्षा करता है। सीएलआर हेडर जानकारी का एक छोटा सा ब्लॉक है जो सीएलआर (प्रबंधित मॉड्यूल) की आवश्यकता वाले मॉड्यूल के लिए विशिष्ट है।

रिचटर, जेफरी (2010-02-05)। सी # के माध्यम से सीएलआर (जलाने के स्थान 1628-1629)। ओर्ली मीडिया - ए किंडल संस्करण।

इसके अलावा छवि स्पष्ट रूप से पता चलता मॉड्यूल केवल मेटाडाटा नहीं PE32 (+), CLR हेडर है, आदि आप प्रकट लगता है और मेटाडाटा दूसरे के स्थान पर इस्तेमाल किया जा सकता है कि क्या?

और क्या आप मॉड्यूल में ** मेनिफेस्ट टेबल भी समझा सकते हैं?

उत्तर

6

जो आपने पोस्ट किया है वह एक शर्मनाक है कि पीई 32 फ़ाइल में एक प्रबंधित असेंबली कैसे एम्बेडेड होती है। यह एक बहुत लचीला प्रारूप है, मूल रूप से मूल निष्पादन योग्य कोड और संसाधनों को स्टोर करने के लिए लक्षित है, लेकिन डेटा को स्टोर करने के लिए पर्याप्त लचीला है। विंडोज़ के दृष्टिकोण से वास्तव में एक असेंबली क्या है। केवल सीएलआर उस डेटा को कुछ निष्पादन योग्य में बदल सकता है।

एक पीई 32 फ़ाइल केवल असेंबली से अधिक है। इसमें वास्तव में देशी कोड भी है। शुद्ध प्रबंधित असेंबली के लिए इसके 5 बाइट्स। इसमें mscoree.dll, प्रबंधित कोड के लिए बूटस्ट्रैपर में एक जंप निर्देश है। एक EXE में _CorExeMain के लिए एक कूद है, एक डीएलएल में _CorDllMain के लिए एक कूद है। यह मिश्रित मोड असेंबली के लिए आगे बढ़ाया गया है, System.Data.dll और PresentationCore.dll उन उदाहरण हैं। उनके पास देशी कोड के बड़े भाग हैं, कोड जो प्रबंधित कक्षाओं द्वारा लिपटे हैं। सी ++/सीएलआई कंपाइलर और लिंकर इस तरह की असेंबली बनाने का तरीका है। .text खंड में कोड होता है, .reloc खंड में स्थानान्तरण जानकारी होती है जो डीएलएल को स्मृति में मनमाना पते पर लोड करने में सहायता करता है।

अधिकांश पीई 32 फाइलों में अप्रबंधित संसाधन भी शामिल हैं। एक प्रारूप जो विंडोज समझता है। यह .rsrc खंड में संग्रहीत है। उदाहरण के लिए सी # कंपाइलर स्वचालित रूप से वहां संसाधन बनाता है, जो आप/win32res विकल्प के साथ ओवरराइड कर सकते हैं। आप इसे फ़ाइल + ओपन + फाइल के साथ देख सकते हैं और एक असेंबली का चयन कर सकते हैं। तीन महत्वपूर्ण हैं:

  • RT_MANIFEST, संसाधन आईडी 1 के साथ एक मैनिफेस्ट है। विंडोज़ को यह समझने की आवश्यकता है कि एक सी # प्रोग्राम यूएसी के साथ संगत है। आप किसी प्रोजेक्ट में एप्लिकेशन मैनिफेस्ट फ़ाइल जोड़कर अपना स्वयं का मैनिफेस्ट बनाते हैं।
  • आईसीओएन, एक आइकन है जो डेस्कटॉप शॉर्टकट
  • संस्करण के लिए डिफ़ॉल्ट आइकन के रूप में चुना गया है, संस्करण में एक अप्रबंधित संस्करण संसाधन है। एक्सप्लोरर विवरण प्रॉपर्टी शीट में दृश्यमान, असेंबली एंटरप्राइज़ से असेंबली गुणों से संकलित,

डंपबिन.एक्सई एक पीई 32 फ़ाइल के आंतरिक भाग पर देखने के लिए एक उपकरण है। दुर्भाग्य से यह प्रबंधित असेंबली के बारे में जानता है ताकि आप सब कुछ नहीं देख सकें।

7

रिक्टर की किताब महान है, लेकिन "सच" ECMA CLI standard.
में परिभाषित किया गया है कृपया आधिकारिक मानक के अनुसार परिभाषा के लिए अध्याय 5 "नियम एवं परिभाषाएं" की जाँच करें।
मुझे लगता है कि आप वहां परिभाषाओं को देखते हुए सबसे अच्छी शर्तों के बीच समानताओं और अंतरों को समझेंगे।

+0

अच्छा लिंक। धन्यवाद। – Tarik

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