असेंबलर को देखने के लिए एक स्रोत फ़ाइल है। इसे उस स्रोत फ़ाइल के आधार पर एक मेमोरी छवि बनाना है। तो यह कोड के लिए 0 के साथ शुरू होता है, और डेटा के साथ 0 के लिए भी शुरू होता है। परिणाम ऑब्जेक्ट फ़ाइल में जाते हैं।
अब, लिंकर के साथ आता है और कई ऑब्जेक्ट फ़ाइलों को निष्पादन योग्य (या कर्नेल छवि, या जो कुछ भी) में जोड़ना होगा। यह सभी को 0 पर नहीं छोड़ सकता है, वे ओवरलैप करेंगे। इसलिए इसे प्रत्येक ऑब्जेक्ट फ़ाइल के डेटा को एक अद्वितीय सीमा में असाइन करने के लिए पते को स्थानांतरित करना होगा।
फिर, छवि वर्चुअल मेमोरी में लोड हो जाती है, ऑपरेटिंग सिस्टम के पास मूल वर्चुअल एड्रेस के रूप में '0' के अलावा किसी अन्य पते का उपयोग करने के अच्छे कारण हो सकते हैं। तो, रनटाइम पर, यह सब कुछ फिर से स्थानांतरित करना चाहता है।
अंत में, यदि साझा पुस्तकालय शामिल हैं, न तो असेंबलर और न ही लिंकर जानता है कि वे चल रहे माहौल में कहां होंगे, और इसलिए उनके संदर्भों को स्थानांतरित किया जाना चाहिए।
http://stackoverflow.com/questions/6002359/so-most-of-the-binary-is-composed-of-reloc-table/6092773#6092773 – JosephH
अपने व्यावहारिक प्रोग्रामिंग समस्या क्या है? क्या आपका प्रोग्राम स्थानांतरित होने के मुद्दे के कारण नहीं चल रहा है? –
विस्तृत न्यूनतम उदाहरण: http://stackoverflow.com/a/30507725/895245 –