Ob'ekt fayli - Object file

An ob'ekt fayli o'z ichiga olgan kompyuter fayli ob'ekt kodi, anavi, mashina kodi chiqishi montajchi yoki kompilyator. Ob'ekt kodi odatda ko'chiriladigan, va odatda to'g'ridan-to'g'ri emas bajariladigan. Ob'ekt fayllari uchun turli xil formatlar mavjud va bir xil mashina kodi turli xil fayl fayllari formatlarida paketlanishi mumkin. An ob'ekt fayli a kabi ishlashi mumkin umumiy kutubxona.

Ob'ekt kodining o'zi bilan bir qatorda, ob'ekt fayllari ham o'z ichiga olishi mumkin metadata bog'lanish yoki disk raskadrovka uchun ishlatiladi, shu jumladan: turli xil modullar orasidagi ramziy o'zaro bog'lanishlarni hal qilish uchun ma'lumot, ko'chirish ma `lumot, ketma-ket ochish ma `lumot, Izohlar, dastur belgilar, disk raskadrovka yoki profil yaratish ma `lumot.

"Ob'ekt dasturi" atamasi kamida 1950 yillarga to'g'ri keladi:

Dasturchi tomonidan yozilgan manba dasturni algebraik yozuvga o'xshash tilga tarjima qilish orqali mashina tomonidan ishlab chiqarilgan mashina tili dasturi uchun avtomatik dasturlash atamasi.[1]

Kompyuter dasturchisi a bilan ob'ekt kodini hosil qiladi kompilyator. Masalan, ostida Linux The GNU kompilyatori to'plami kompilyator .o kengaytmali fayllarni yaratadi. Kompyuterda ular .obj kengaytmasiga ega. Keyinchalik bog'lovchi ob'ekt kodini bitta bajariladigan dasturga yoki kutubxonani kerak bo'lganda oldindan tuzilgan tizim kutubxonasiga birlashtirish uchun ishlatiladi. Aksincha, skriptlar (Python yoki JavaScript) talqin etiladi va Java (dasturlash tili) dasturlar bayt-kodli sinf fayllariga yig'iladi.

Ob'ekt fayllari formatlari

Ob'ekt fayllarining turli xil formatlari mavjud; dastlab kompyuterlarning har bir turi o'ziga xos formatga ega edi, ammo paydo bo'lishi bilan Unix va boshqalar ko'chma operatsion tizimlar, ba'zi formatlari, masalan COFF va ELF, har xil tizimlarda aniqlangan va ishlatilgan. Xuddi shu fayl formatidan ikkalasida ham foydalanish mumkin bog'lovchi kirish va chiqish, va shunday qilib kutubxona va bajariladigan fayl formati.[2]:16-bet Ba'zi formatlarda turli xil protsessorlar uchun mashina kodi bo'lishi mumkin, dastur to'g'ri yuklanganida operatsion tizim tomonidan to'g'ri tanlangan.[3]

Ba'zi tizimlar to'g'ridan-to'g'ri bajariladigan fayllar va bog'lovchi tomonidan qayta ishlashni talab qiladigan fayllar o'rtasida farq qiladi. Masalan, OS / 360 va vorislari birinchi formatga qo'ng'iroq qiling a yuk moduli ikkinchisi esa ob'ekt moduli. Bunday holda fayllar butunlay boshqacha formatga ega.

Ob'ekt fayli formatini loyihalashtirish va / yoki tanlash tizimning umumiy dizaynining asosiy qismidir. Bu bog'lovchining ishlashiga ta'sir qiladi va shu bilan dasturchi dastur ishlab chiqilayotganda burilish. Agar format bajariladigan fayllar uchun ishlatilsa, dizayn shuningdek dasturlarni qabul qilish vaqtiga ta'sir qiladi yugurishni boshlang va shunday qilib javob berish foydalanuvchilar uchun.

Mutlaq ob'ekt fayllari

Ko'pgina dastlabki kompyuterlar yoki kichik mikrokompyuterlar faqat mutlaq ob'ekt formatini qo'llab-quvvatlaydi. Dasturlar boshqa joyga ko'chirilmaydi; ularni aniq, oldindan belgilangan manzillarda bajarish uchun yig'ish yoki yig'ish kerak. Faylda boshqa joyga ko'chish yoki bog'lanish haqida ma'lumot yo'q. Ushbu fayllarni o'qish / yozish xotirasiga o'rnatish yoki saqlash mumkin faqat o'qish uchun xotira. Masalan, Motorola 6800 MIKBUG monitorda mutlaq ob'ekt faylini o'qish tartibi mavjud (SREC formati ) dan qog'oz lenta.[4] DOS MAQOMOTI fayllari mutlaq ob'ekt fayllarining so'nggi namunasidir.[5]

Segmentatsiya

Ob'ektli fayl formatlarining aksariyati ma'lumotlarning alohida bo'limlari sifatida tuzilgan, har bir bo'lim ma'lum bir turdagi ma'lumotlarni o'z ichiga oladi. Ushbu bo'limlar "atamasi tufayli" segmentlar "deb nomlanadixotira segmenti ", ilgari keng tarqalgan shakli bo'lgan xotirani boshqarish. Dastur a tomonidan xotiraga yuklanganda yuklovchi, yuklovchi dasturga xotiraning turli mintaqalarini ajratadi. Ushbu mintaqalarning ba'zilari ob'ekt fayli segmentlariga mos keladi va shuning uchun odatda bir xil nomlar bilan tanilgan. Boshqalar, masalan, stek, faqat ishlash vaqtida mavjud. Ba'zi hollarda, ko'chirish haqiqiy xotira manzillarini aniqlash uchun yuklovchi (yoki bog'lovchi) tomonidan amalga oshiriladi. Biroq, ko'plab dasturlar yoki arxitekturalar uchun ko'chirish shart emas, chunki ular tomonidan ko'rib chiqiladi xotirani boshqarish bo'limi yoki tomonidan pozitsiyadan mustaqil kod. Keyinchalik ba'zi bir tizimlarda ob'ekt fayli segmentlari keyinchalik qayta ishlashga hojat qoldirmasdan xotiraga ko'chirilishi (sahifalashi) va bajarilishi mumkin. Ushbu tizimlarda bu amalga oshirilishi mumkin dangasa, ya'ni faqat bajarilish paytida segmentlarga havola qilinganida, masalan xotira bilan bog'langan fayl ob'ekt fayli tomonidan qo'llab-quvvatlanadi.

Odatda ob'ekt fayli formatlari tomonidan qo'llab-quvvatlanadigan ma'lumotlar turlari:[6]

Turli xil ob'ekt fayllaridagi segmentlar bog'lovchi tomonidan segmentlar aniqlanganda belgilangan qoidalarga muvofiq birlashtirilishi mumkin. Konventsiyalar ob'ekt fayllari o'rtasida taqsimlangan segmentlar uchun mavjud; masalan, in DOS lar bor turli xil xotira modellari maxsus segmentlarning nomlarini va ular birlashtirilishi yoki qo'shilmasligini ko'rsatadigan.[7]

Nosozliklarni tuzatish to'g'risidagi ma'lumotlar, ob'ektdagi fayl formatining ajralmas qismi bo'lishi mumkin, xuddi shunday COFF yoki a yarim mustaqil format kabi bir nechta ob'ekt formatlari bilan ishlatilishi mumkin pichoqlar yoki DWARF.

The GNU loyihasi "s Ikkilik fayllarni tavsiflovchi kutubxonasi (BFD kutubxonasi) umumiy ma'lumot beradi API ob'ekt formatidagi fayllarni turli formatdagi manipulyatsiyasi uchun.

Adabiyotlar

  1. ^ Vrubel, marshal H. (1959). Raqamli kompyuterlar uchun dasturlashning boshlang'ich qismi. Nyu-York: McGraw-Hill. p. 222. Olingan 31 iyul, 2020.
  2. ^ IBM korporatsiyasi (1973). IBM OS Linkage Editor va Loader (PDF). Olingan 2012-08-06.
  3. ^ "FatELF: Linux uchun universal ikkiliklar". Olingan 2 avgust, 2020.
  4. ^ Uaylz, Mayk; Feliks, Andre. MCM6830L7 MIKBUG / MINIBUG ROM (PDF). Motorola Semiconductor Products, Inc.. Olingan 31 iyul, 2020.
  5. ^ Godse, D.A .; Godse, AP (2008). Mikroprotsessor - men (Birinchi nashr). Pune: Texnik nashrlar. p. 3-15. ISBN  978-81-8431-355-0.
  6. ^ Mauerer, Volfgang (2010). Professional Linux yadrosi arxitekturasi. John Wiley & Sons. p. Ilova E: ELF ikkilik formati. ISBN  978-0-470-34343-2. Olingan 1 avgust, 2020.
  7. ^ Irvin, Kip R. (1993), IBM-PC uchun yig'ilish tili (2-nashr), Nyu-York: Makmillan, ISBN  0-02-359651-1

Qo'shimcha o'qish