Object file
ઓબ્જેક્ટ ફાઇલ એ ઓબ્જેક્ટ કોડ ધરાવતી કમ્પ્યુટર ફાઇલ છે, જે એસેમ્બલર અથવા કમ્પાઇલરનું મશીન કોડ આઉટપુટ છે. ઓબ્જેક્ટ કોડ સામાન્ય રીતે સ્થાનાંતરિત કરી શકાય તેવું હોય છે, અને સામાન્ય રીતે સીધા ચલાવવા યોગ્ય નથી. ઓબ્જેક્ટ ફાઇલો માટે વિવિધ બંધારણો છે, અને સમાન મશીન કોડને વિવિધ ઓબ્જેક્ટ ફાઇલ બંધારણોમાં પેક કરી શકાય છે. ઑબ્જેક્ટ ફાઇલ વહેંચાયેલ લાઈબ્રેરીની જેમ પણ કામ કરી શકે છે. ઓબ્જેક્ટ કોડ ઉપરાંત, ઓબ્જેક્ટ ફાઇલોમાં જોડવા અથવા ડિબગીંગ માટે ઉપયોગમાં લેવાતા મેટાડેટા હોઈ શકે છે, જેમાં નીચેનાનો સમાવેશ થાય છેઃ વિવિધ મોડ્યુલો વચ્ચેના પ્રતીકાત્મક ક્રોસ-સંદર્ભોને ઉકેલવા માટેની માહિતી, સ્થાનાંતરણ માહિતી, અનવાઇન્ડિંગ માહિતી, ટિપ્પણીઓ, પ્રોગ્રામ પ્રતીકો, ડિબગીંગ અથવા પ્રોફાઇલિંગ માહિતી. અન્ય મેટાડેટામાં સંકલનની તારીખ અને સમય, સંકલનકર્તાનું નામ અને સંસ્કરણ અને અન્ય ઓળખની માહિતી શામેલ હોઈ શકે છે. "ઓબ્જેક્ટ પ્રોગ્રામ" શબ્દ ઓછામાં ઓછો 1950ના દાયકાનો છેઃ કમ્પ્યુટર પ્રોગ્રામર કમ્પાઇલર અથવા એસેમ્બલર સાથે ઓબ્જેક્ટ કોડ જનરેટ કરે છે. ઉદાહરણ તરીકે, લિનક્સ હેઠળ, જીએનયુ કમ્પાઇલર કલેક્શન કમ્પાઇલર. ઓ એક્સ્ટેંશન સાથે ફાઇલો જનરેટ કરશે જે ઇએલએફ ફોર્મેટનો ઉપયોગ કરે છે. વિન્ડોઝ પર સંકલન. ઓબીજે એક્સ્ટેંશન સાથે ફાઇલો પેદા કરે છે જે સી. ઓ. એફ. એફ. ફોર્મેટનો ઉપયોગ કરે છે. પછી એક લિંકરનો ઉપયોગ ઑબ્જેક્ટ કોડને એક એક્ઝેક્યુટેબલ પ્રોગ્રામમાં જોડવા માટે થાય છે અથવા જરૂરિયાત મુજબ પૂર્વ સંકલિત સિસ્ટમ લાઈબ્રેરીઓમાં લાઇબ્રેરી ખેંચે છે. ઓબ્જેક્ટ ફાઇલ બંધારણો ઘણા જુદા જુદા ઓબ્જેક્ટ ફાઇલ બંધારણો છે; મૂળરૂપે દરેક પ્રકારના કમ્પ્યુટરનું પોતાનું અનન્ય બંધારણ હતું, પરંતુ યુનિક્સ અને અન્ય પોર્ટેબલ ઓપરેટિંગ સિસ્ટમ્સના આગમન સાથે, ઇએલએફ અને સીઓએફએફ જેવા કેટલાક બંધારણોને વ્યાખ્યાયિત કરવામાં આવ્યા છે અને વિવિધ પ્રકારની સિસ્ટમો પર તેનો ઉપયોગ કરવામાં આવ્યો છે. સમાન ફોર્મેટનો ઉપયોગ લિંકર ઇનપુટ અને આઉટપુટ બંને તરીકે અને આમ લાઇબ્રેરી અને એક્ઝેક્યુટેબલ ફાઇલ ફોર્મેટ તરીકે કરવો શક્ય છે. કેટલાક બંધારણોમાં વિવિધ પ્રોસેસરો માટે મશીન કોડ હોઈ શકે છે, જ્યારે પ્રોગ્રામ લોડ થાય ત્યારે ઓપરેટિંગ સિસ્ટમ દ્વારા પસંદ કરાયેલ સાચો કોડ હોય છે. કેટલીક પ્રણાલીઓ સીધા ચલાવવા યોગ્ય બંધારણો અને લિંકર દ્વારા પ્રક્રિયાની જરૂર હોય તેવા બંધારણો વચ્ચે તફાવત કરે છે. ઉદાહરણ તરીકે, OS/360 અને અનુગામીઓ પ્રથમ બંધારણને લોડ મોડ્યુલ અને બીજાને ઓબ્જેક્ટ મોડ્યુલ કહે છે. આ કિસ્સામાં ફાઇલો સંપૂર્ણપણે અલગ બંધારણો ધરાવે છે. ઑબ્જેક્ટ ફાઇલ ફોર્મેટની ડિઝાઇન અને/અથવા પસંદગી એ એકંદર સિસ્ટમ ડિઝાઇનનો મુખ્ય ભાગ છે. તે લિંકરની કામગીરીને અસર કરે છે અને આમ પ્રોગ્રામર ટર્નઅરાઉન્ડ જ્યારે પ્રોગ્રામ વિકસાવવામાં આવી રહ્યો હોય. જો ફોર્મેટનો ઉપયોગ એક્ઝેક્યુટેબલ માટે થાય છે, તો ડિઝાઇન પ્રોગ્રામ્સ ચલાવવાનું શરૂ કરવા માટેના સમયને પણ અસર કરે છે, અને આમ વપરાશકર્તાઓ માટે પ્રતિભાવ આપે છે. ઘણા પ્રારંભિક કમ્પ્યુટર્સ, અથવા નાના માઇક્રોકમ્પ્યુટર્સ, માત્ર એક સંપૂર્ણ ઓબ્જેક્ટ ફોર્મેટને સપોર્ટ કરે છે. પ્રોગ્રામ્સ સ્થાનાંતરિત કરી શકાય તેવા નથી; તેમને ચોક્કસ, પૂર્વવ્યાખ્યાયિત સરનામાંઓ પર ચલાવવા માટે એસેમ્બલ અથવા સંકલિત કરવાની જરૂર છે. ફાઇલમાં કોઈ સ્થળાંતર અથવા જોડાણની માહિતી નથી. આ ફાઇલોને વાંચી/લખી શકાય તેવી મેમરીમાં ભરી શકાય છે અથવા ફક્ત વાંચી શકાય તેવી મેમરીમાં સંગ્રહિત કરી શકાય છે. ઉદાહરણ તરીકે, મોટોરોલા 6800 એમ. આઈ. કે. બી. યુ. જી. મોનિટરમાં પેપર ટેપમાંથી એબ્સોલ્યુટ ઓબ્જેક્ટ ફાઇલ (એસ. આર. ઈ. સી. ફોર્મેટ) વાંચવાની નિયમિતતા હોય છે. DOS COM ફાઇલો એ એબ્સોલ્યુટ ઓબ્જેક્ટ ફાઇલોનું વધુ તાજેતરનું ઉદાહરણ છે. વિભાજન મોટાભાગના ઓબ્જેક્ટ ફાઇલ બંધારણો ડેટાના અલગ વિભાગો તરીકે રચાયેલ છે, દરેક વિભાગમાં ચોક્કસ પ્રકારનો ડેટા હોય છે. આ વિભાગોને "મેમરી સેગમેન્ટ" શબ્દને કારણે "સેગમેન્ટ્સ" તરીકે ઓળખવામાં આવે છે, જે અગાઉ મેમરી મેનેજમેન્ટનું સામાન્ય સ્વરૂપ હતું. જ્યારે પ્રોગ્રામને લોડર દ્વારા મેમરીમાં લોડ કરવામાં આવે છે, ત્યારે લોડર પ્રોગ્રામને મેમરીના વિવિધ પ્રદેશો ફાળવે છે. આમાંના કેટલાક પ્રદેશો ઑબ્જેક્ટ ફાઇલના વિભાગોને અનુરૂપ છે, અને આમ સામાન્ય રીતે તે જ નામોથી ઓળખાય છે. અન્ય, જેમ કે સ્ટૅક, માત્ર રન ટાઇમ પર અસ્તિત્વ ધરાવે છે. કેટલાક કિસ્સાઓમાં, વાસ્તવિક મેમરી સરનામાંને સ્પષ્ટ કરવા માટે લોડર (અથવા લિંકર) દ્વારા સ્થળાંતર કરવામાં આવે છે. જો કે, ઘણા કાર્યક્રમો અથવા આર્કિટેક્ચર માટે, મેમરી મેનેજમેન્ટ એકમ દ્વારા અથવા સ્થિતિ-સ્વતંત્ર કોડ દ્વારા નિયંત્રિત થવાને કારણે સ્થળાંતર જરૂરી નથી. કેટલીક સિસ્ટમો પર ઑબ્જેક્ટ ફાઇલના સેગમેન્ટ્સને પછી મેમરીમાં કોપી (પેજ) કરી શકાય છે અને વધુ પ્રક્રિયાની જરૂર વગર ચલાવવામાં આવે છે. આ સિસ્ટમો પર, આ આળસથી કરી શકાય છે, એટલે કે, માત્ર ત્યારે જ જ્યારે સેગમેન્ટ્સ એક્ઝેક્યુશન દરમિયાન સંદર્ભિત હોય, ઉદાહરણ તરીકે ઑબ્જેક્ટ ફાઇલ દ્વારા સમર્થિત મેમરી-મેપ કરેલી ફાઇલ દ્વારા. લાક્ષણિક ઓબ્જેક્ટ ફાઇલ ફોર્મેટ દ્વારા સપોર્ટેડ ડેટાના પ્રકારોઃ હેડર (વર્ણનાત્મક અને નિયંત્રણ માહિતી) કોડ સેગમેન્ટ ("ટેક્સ્ટ સેગમેન્ટ", એક્ઝેક્યુટેબલ કોડ) ડેટા સેગમેન્ટ (પ્રારંભિક સ્થિર ચલો) રીડ-ઓનલી ડેટા સેગમેન્ટ (રોડેટા, પ્રારંભિક સ્થિર સ્થિરાંકો) BSS સેગમેન્ટ (પ્રારંભિક સ્થિર માહિતી, બંને ચલ અને સ્થિરાંકો) સ્થળાંતર માહિતીને જોડવા માટે બાહ્ય વ્યાખ્યાઓ અને સંદર્ભો ગતિશીલ માહિતીને જોડતી માહિતી વિવિધ ઓબ્જેક્ટ ફાઇલોમાં ડિબગીંગ માહિતી વિભાગો જ્યારે વિભાગો વ્યાખ્યાયિત કરવામાં આવે ત્યારે નિર્દિષ્ટ નિયમો અનુસાર લિંકર દ્વારા જોડી શકાય છે. ઓબ્જેક્ટ ફાઇલો વચ્ચે વહેંચાયેલા સેગમેન્ટ્સ માટે પરંપરાઓ અસ્તિત્વ ધરાવે છે; દાખલા તરીકે, ડી. ઓ. એસ. માં વિવિધ મેમરી મોડેલ્સ છે જે વિશેષ સેગમેન્ટ્સના નામોનો ઉલ્લેખ કરે છે અને તેઓ સંયુક્ત થઈ શકે છે કે નહીં. ડીબગિંગ માહિતીનું ડીબગિંગ ડેટા ફોર્મેટ કાં તો ઓબ્જેક્ટ ફાઇલ ફોર્મેટનો અભિન્ન ભાગ હોઈ શકે છે, જેમ કે સી. ઓ. એફ. એફ. માં, અથવા અર્ધ-સ્વતંત્ર ફોર્મેટ જેનો ઉપયોગ ઘણા ઓબ્જેક્ટ ફોર્મેટ સાથે થઈ શકે છે, જેમ કે સ્ટેબ્સ અથવા ડી. ડબલ્યુ. એ. આર. એફ. જીએનયુ પ્રોજેક્ટની બાઈનરી ફાઇલ ડિસ્ક્રીપ્ટર લાઇબ્રેરી (બીએફડી લાઇબ્રેરી) વિવિધ બંધારણોમાં ઓબ્જેક્ટ ફાઇલોની હેરફેર માટે એક સામાન્ય એપીઆઈ પ્રદાન કરે છે. ઇન્ટેલ હેક્સાડેસિમલ ઓબ્જેક્ટ ફાઇલ ફોર્મેટ (સામાન્ય રીતે ફાઇલ એક્સ્ટેંશન. હેક્સ સાથે, પરંતુ કેટલીકવાર. ઓ. બી. જે. સાથે પણ) રીલોકેટેબલ ઓબ્જેક્ટ મોડ્યુલ ફોર્મેટ વેવફ્રન્ટ. ઓ. બી. જે. સંદર્ભો ફાઇલ વધુ વાંચન એક્ઝેક્યુટેબલ ફાઇલ ફોર્મેટ્સ કમ્પાઇલર કન્સ્ટ્રક્શન કમ્પ્યુટર લાઇબ્રેરીઓ પ્રોગ્રામિંગ લેંગ્વેજ અમલીકરણ