COFF - COFF

COFF
Fayl nomi kengaytmasi
yo'q, .o, .obj
Tomonidan ishlab chiqilganAT&T korporatsiyasi
Format turiIkkilik, bajariladigan, ob'ekt, umumiy kutubxonalar
KengaytirilganXCOFF, ECOFF, Portativ bajariladigan

The Umumiy ob'ekt fayllari formati (COFF) a format uchun bajariladigan, ob'ekt kodi va umumiy kutubxona kompyuter fayllari ishlatilgan Unix tizimlar. U joriy etildi Unix System V, ilgari ishlatilgan o'rnini bosdi a.out formatga ega va kabi kengaytirilgan spetsifikatsiyalar uchun asos bo'lgan XCOFF va ECOFF, asosan almashtirilishidan oldin ELF bilan tanishtirildi SVR4. COFF va uning variantlaridan ba'zilari foydalanishda davom etmoqda Unixga o'xshash tizimlar, yoqilgan Microsoft Windows (PE formati ), in EFI atrof-muhit va ba'zi o'rnatilgan rivojlanish tizimlarida.

Tarix

Unix ob'ektining asl formati a.out etarli darajada qo'llab-quvvatlay olmaydi umumiy kutubxonalar, xorijiy formatni identifikatsiyalash[iqtibos kerak ]yoki aniq manzil aloqasi[iqtibos kerak ]. Rivojlanish sifatida Unixga o'xshash tizimlar AT&T ichida ham, tashqarisida ham davom etdi, bu va boshqa masalalarga turli xil echimlar paydo bo'ldi.

COFF 1983 yilda AT & T-larda ishlab chiqarilgan UNIX tizimi V kabi VAX bo'lmagan 32 bitli platformalar uchun 3B20[iqtibos kerak ]. Mavjud AT&T tizimini takomillashtirish a.out format o'zboshimchalik bilan bo'limlarni, aniq protsessor deklaratsiyalarini va aniq manzil aloqalarini o'z ichiga olgan.

Biroq, COFF dizayni juda cheklangan va to'liq ko'rsatilmagan edi: bo'limlarning maksimal sonida cheklov, bo'lim nomlari uzunligining chegarasi, manba fayllari kiritilgan va ramziy disk raskadrovka to'g'risidagi ma'lumotlar haqiqiy dunyo tillarini qo'llab-quvvatlashga qodir emas edi. kabi C, juda kam yangi tillar kabi C ++ yoki yangi protsessorlar. COFFning real hayotga tatbiq etilishining barcha natijalari standartni buzganligi edi. Bu ko'plab COFF kengaytmalariga olib keldi. IBM ishlatilgan XCOFF formatdagi AIX; DEK, SGI va boshqalar ishlatilgan ECOFF; O'rnatilgan rivojlanishga yo'naltirilgan ko'plab SysV portlari va asboblar zanjirlari har biri o'zlariga mos kelmaydigan farqlarni yaratdi.

SVR4 chiqarilishi bilan AT&T COFF-ni almashtirdi ELF.

COFF-ning kengaytirilgan versiyalari Unix-ga o'xshash ba'zi platformalar uchun, avvalambor, o'rnatilgan tizimlarda foydalanishda davom etayotgan bo'lsa-da, ehtimol bugungi kunda COFF formatining eng keng qo'llanilishi Microsoft "s Portativ bajariladigan (PE) formati. Uchun ishlab chiqilgan Windows NT, PE formatida (ba'zan PE / COFF deb yoziladi) ob'ekt fayllari uchun COFF sarlavhasi va bajariladigan fayllar uchun PE sarlavhasining tarkibiy qismi sifatida foydalaniladi.[1]

Xususiyatlari

COFF-ning asosiy yaxshilanishi a.out ob'ekt faylida bir nechta nomlangan bo'limlarni kiritish edi. Turli xil ob'ekt fayllari turli xil raqamlar va bo'lim turlariga ega bo'lishi mumkin.

Simvolik nosozliklarni tuzatish to'g'risidagi ma'lumotlar

COFF ramziy nosozliklarni tuzatish to'g'risidagi ma'lumotlar dastur funktsiyalari va o'zgaruvchilar uchun ramziy (qatorli) nomlardan va to'xtash nuqtalarini o'rnatish va kuzatishni bajarish uchun ishlatiladigan qator raqamlari ma'lumotlaridan iborat.

Ramziy nomlar COFF belgilar jadvalida saqlanadi. Har bir belgi jadvalidagi yozuv nom, saqlash klassi, turi, qiymati va bo'lim raqamini o'z ichiga oladi. Qisqacha ismlar (8 ta belgi yoki undan kam) to'g'ridan-to'g'ri ramzlar jadvalida saqlanadi; uzunroq nomlar COFF ob'ekti oxirida satrlar jadvalida ofset sifatida saqlanadi.

Saqlash sinflari belgi ifodalovchi tip mavjudligini tavsiflaydi va tashqi o'zgaruvchilar (C_EXT), avtomatik (stack) o'zgaruvchilar (C_AUTO), registr o'zgaruvchilari (C_REG), funktsiyalar (C_FCN) va boshqalarni o'z ichiga olishi mumkin. Belgilar turi ramz sub'ektining qiymatini talqin qilishni tavsiflaydi va barcha uchun qiymatlarni o'z ichiga oladi C ma'lumotlar turlari.

Tegishli variantlar bilan kompilyatsiya qilinganida, COFF ob'ekt fayli ob'ekt faylining matn qismidagi har bir mumkin bo'lgan tanaffus nuqtasi uchun qator raqamlari ma'lumotlarini o'z ichiga oladi. Chiziq raqami haqida ma'lumot ikki shaklda bo'ladi: birinchisida kodning har bir uzilish nuqtasi uchun satrlar jadvalidagi yozuv manzilni va unga mos keladigan satr raqamini yozib qo'yadi. Ikkinchi shaklda yozuv funktsiya boshlanishini ifodalovchi belgi jadvali yozuvini aniqlaydi va funktsiya nomi yordamida to'xtash nuqtasini o'rnatishga imkon beradi.

E'tibor bering, COFF mos kelmaydigan kengaytmalarsiz COFF disk raskadrovka ma'lumotlarini deyarli yaroqsiz holga keltiradigan sarlavha fayllari singari kiritilgan manba uchun satr raqamlarini yoki disk raskadrovka belgilarini ko'rsatishga qodir emas edi.

Nisbiy virtual manzil

COFF fayli yaratilganda, uning xotiraga qaerga yuklanishi odatda ma'lum emas. The virtual manzil bu erda faylning birinchi bayti yuklanadigan rasm deyiladi asosiy manzil. Faylning qolgan qismi majburiy ravishda qo'shni blokda emas, balki boshqacha tarzda yuklanadi bo'limlar.

Nisbiy virtual manzillarni (RVA) standart virtual manzillar bilan aralashtirib bo'lmaydi. A nisbiy virtual manzil bo'ladi virtual manzil Fayl tasvirining asosiy manzilini olib tashlab, xotiraga yuklanganidan so'ng, fayldan ob'ektning. Agar fayl tom ma'noda diskdan xotiraga xaritalab qo'yilgan bo'lsa, RVA faylga o'rnatilgan fayl bilan bir xil bo'lar edi, ammo bu aslida juda g'alati.

RVA atamasi faqat rasm faylidagi ob'ektlar bilan ishlatilishini unutmang. Xotiraga yuklangandan so'ng, rasm bazasi manzili qo'shiladi va oddiy VA ishlatiladi.

Muammolar

COFF fayl sarlavhasi ob'ekt fayli yaratilgan sana va vaqtni 32-bitli ikkilik butun son sifatida saqlaydi, chunki Unix epoxasi, 1 yanvar 1970 00:00:00 UTC. Keyin sodir bo'lgan sanalar 19 yanvar 2038 yil ushbu formatda saqlash mumkin emas.

Shuningdek qarang

Izohlar

Adabiyotlar

  • MIPS COFF Spec
  • Gircys, Gintaras (1988), COFFni tushunish va undan foydalanish, O'Reilly va Associates, ISBN  0-937175-31-5
  • Microsoft korporatsiyasi (2006b), Umumiy ob'ekt fayllari formati (COFF) (Reviziya 4.1 tahr.), Arxivlangan asl nusxasi 2006-12-16 kunlari, olingan 2007-06-02

Tashqi havolalar