എക്സിക്യൂട്ടബിൾ ആന്റ് ലിങ്കബിൾ ഫോർമാറ്റ്

(ഇഎൽഎഫ് എന്ന താളിൽ നിന്നും തിരിച്ചുവിട്ടതു പ്രകാരം)

ബൈനറി, എക്സിക്യൂട്ടബിൾ, ഒബ്ജക്റ്റ് കോഡ്, ഷെയേർഡ് ലൈബ്രറികൾ, കോർ ഡമ്പ് ഇവയ്ക്കുള്ള ഒരു ഫയൽ തരമാണ് എക്സിക്യൂട്ടബിൾ & ലിങ്കബിൾ ഫോർമാറ്റ് (മുൻപ് എക്സൻസബിൾ ലിങ്കിങ്ങ് ഫോർമാറ്റ്) [1]ആദ്യം സിസ്റ്റം വി(System V)യുടെ ആപ്ലിക്കേഷൻ ബൈനറി ഇന്റർഫേസ് സ്പെസിഫിക്കേഷനിലാണ് പരാമർശിക്കുന്നത്. ഇത് പെട്ടെന്നു തന്നെ വിവിധ യൂണിക്സ് വെണ്ടർമാക്കിടയിൽ പ്രസിദ്ധമായി.[2] 1999-ൽ യുണിക്സ്, x86 പ്രോസ്സസറുകൾ ഉപയോഗിച്ച് യൂണിക്സ് സമാന ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങളുടെ അംഗീകൃത ബൈനറി ഫയൽ തരമായി 86open പദ്ധതി അംഗീകരിച്ചു.[3]

എക്സിക്യൂട്ടബിൾ & ലിങ്കബിൾ ഫോർമാറ്റ്
എക്സ്റ്റൻഷൻnone, .axf, .bin, .elf, .o, .out, .prx, .puff, .ko, .mod, and .so
മാജിക് നമ്പർ0x7F 'E' 'L' 'F'
ഫോർമാറ്റ് തരംBinary, executable, object, shared library, core dump
ഒരു ഇഎൽഎഫ് ഫയലിന് രണ്ട് വ്യൂവ്സ് ഉണ്ട്: പ്രോഗ്രാം ഹെഡർ റൺ ടൈമിൽ ഉപയോഗിക്കുന്ന സെഗ്‌മെന്റുകൾ കാണിക്കുന്നു, അതേസമയം സെക്ഷൻ ഹെഡർ സെക്ഷനുകളുടെ സെറ്റ് ലിസ്റ്റ് ചെയ്യുന്നു.

ഡിസൈൻ പ്രകാരം, ഇഎൽഎഫ് ഫോർമാറ്റ് ഫ്ലെക്സിബിളും വിപുലീകരിക്കാവുന്നതും ക്രോസ്-പ്ലാറ്റ്ഫോമാണ്. ഉദാഹരണത്തിന്, ഇത് വ്യത്യസ്ത എൻഡിയൻനെസ്സുകളെയും അഡ്രസ്സ് സൈസ്സുകളെയും പിന്തുണയ്ക്കുന്നു, അതിനാൽ തന്നെ ഇത് ഏതെങ്കിലും പ്രത്യേക സെൻട്രൽ പ്രോസസ്സിംഗ് യൂണിറ്റ് (സിപിയു) അല്ലെങ്കിൽ ഇൻസ്ട്രക്ഷൻ സെറ്റ് ആർക്കിടെക്ചറിനെയും ഒഴിവാക്കില്ല. വ്യത്യസ്ത ഹാർഡ്‌വെയർ പ്ലാറ്റ്‌ഫോമുകളിലുള്ള പല ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾക്കും ഇതിനെ സ്വീകരിക്കാൻ സാധിച്ചിട്ടുണ്ട്.

ഫയൽ ലേഔട്ട്

തിരുത്തുക

ഒരു എൽഫ്(ELF) ഫയൽ ഒരു ഹെഡറിൽ ആരംഭിക്കുന്നു, കൂടാതെ പ്രോഗ്രാമിൻ്റെ റൺ ചെയ്യാനുള്ള കോഡ്, വേരിയബിളുകൾക്കുള്ള ഡാറ്റ, അൺഇനീഷ്യലൈസ് ചെയ്ത വിവരങ്ങൾക്കുള്ള ഇടം എന്നിങ്ങനെ വ്യത്യസ്ത വിഭാഗങ്ങൾ അടങ്ങിയിരിക്കുന്നു. പേരുകളും വിലാസങ്ങളും ട്രാക്ക് ചെയ്യാൻ സഹായിക്കുന്ന പട്ടികകളും ഇതിലുണ്ട്, ഇത് മൂലം കമ്പ്യൂട്ടറിന് പ്രോഗ്രാം ലോഡ് ചെയ്യാനും ഡീബഗ് ചെയ്യാനും എളുപ്പമാക്കുന്നു. ഒരു എൽഫ് ഫയലിലെ ഡാറ്റയിൽ ഇവ ഉൾപ്പെടാം:

  • ഒരു പ്രോഗ്രാം ഹെഡർ ടേബിൾ, സെഗ്മെന്റുകളെക്കുറിച്ച് വിവരിക്കുന്നു.
  • കോഡ് അല്ലെങ്കിൽ വേരിയബിളുകൾ പോലെയുള്ള ഡാറ്റയുടെ വിവിധ വിഭാഗങ്ങളെ ലിസ്റ്റുചെയ്യുന്ന ഒരു സെക്ഷൻ ഹെഡർ ടേബിൾ ഉണ്ട്.
  • പ്രോഗ്രാമിലെ യഥാർത്ഥ ഡാറ്റ, പ്രോഗ്രാമിലോ സെക്ഷൻ ഹെഡറുകളിലോ ലിസ്‌റ്റ് ചെയ്‌തിരിക്കുന്നതുമായി ലിങ്ക് ചെയ്‌തിരിക്കുന്നു.
 
പ്രധാന എൻട്രികൾ ഹൈലൈറ്റ് ചെയ്‌ത ഒരു എൽഫ് ഫയലിൻ്റെ ഘടന

സെഗ്‌മെൻ്റുകൾ ഒരു പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കുന്നതിന് ആവശ്യമായ നിർദ്ദേശങ്ങൾ പോലെയാണ്, അതേസമയം പ്രോഗ്രാം നിർമ്മിക്കുന്നതിന് ഡാറ്റ ഓർഗനൈസ് ചെയ്യാൻ വിഭാഗങ്ങൾ ഉപയോഗിക്കുന്നു. ഫയലിൻ്റെ ഓരോ ഭാഗവും ഒരു വിഭാഗത്തിൽ മാത്രമേ ഉൾപ്പെടൂ, എന്നാൽ ചില ബിറ്റുകൾ ഓർഫൻ ബൈറ്റുകൾ എന്ന് വിളിക്കപ്പെടുന്നു, ഇവ ഒരു വിഭാഗത്തിലും ഉൾപ്പെടില്ല.

എൽഫ് ഹെഡർ

തിരുത്തുക

പ്രോഗ്രാം 32-ബിറ്റ് അല്ലെങ്കിൽ 64-ബിറ്റ് അഡ്രസ്സുകൾ ഉപയോഗിക്കുന്നുണ്ടോ എന്ന് എൽഫ് ഹെഡർ തീരുമാനിക്കുന്നു. ഈ ചോയ്‌സ് ഹെഡറിലെ മൂന്ന് ഫീൽഡുകൾ മാറ്റുകയും ബാക്കിയുള്ളവയുടെ ലേഔട്ടിനെ ബാധിക്കുകയും ചെയ്യുന്നു. 32-ബിറ്റ് പ്രോഗ്രാമുകൾക്ക് 52 ബൈറ്റുകളും 64-ബിറ്റ് പ്രോഗ്രാമുകൾക്ക് 64 ബൈറ്റുകളും ഉൾപ്പെടുന്നതാണ് ഒരു ഹെഡർ.

  1. Tool Interface Standard (TIS) Portable Formats Specification Version 1.1 (October 1993)
  2. System V Application Binary Interface Edition 4.1 (1997-03-18)
  3. Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2 (May 1995)