Yog 'ikkilik - Fat binary

A yog 'ikkilik (yoki ko'p arxitektura ikkilik) bu kompyuter bajariladigan dastur yoki kutubxona kengaytirilgan (yoki "semirtirilgan") mahalliy kod bilan ko'rsatmalar to'plamlari natijada bir nechta protsessor turlarida ishlash mumkin. Buning natijasida oddiy bitta arxitektura ikkilik faylidan kattaroq fayl paydo bo'ladi, shuning uchun nom.

Amalga oshirishning odatiy usuli - ning versiyasini kiritish mashina kodi oldin bitta buyruq berilgan har bir ko'rsatma to'plami uchun kirish nuqtasi tegishli bo'limga o'tishni amalga oshiradigan barcha operatsion tizimlarga mos keladigan kod bilan. Muqobil dasturlar turli xil bajariladigan fayllarni turlicha saqlaydi vilkalar, har biri to'g'ridan-to'g'ri operatsion tizim tomonidan ishlatiladigan o'z kirish nuqtasiga ega.

Yog 'ikkiliklaridan foydalanish odatiy emas operatsion tizim dasturiy ta'minot; bir xil muammoni hal qilish uchun bir nechta alternativalar mavjud, masalan o'rnatuvchi o'rnatish vaqtida arxitekturaga xos ikkilikni tanlash dasturi (masalan. bilan Android bir nechta APK-lar), arxitekturaga xos ikkilikni ish vaqtida tanlash (masalan bilan 9-reja kasaba uyushma ma'lumotnomalari va GNUstep semiz to'plamlar),[1][2] dasturiy ta'minotni tarqatish manba kodi shakli va kompilyatsiya qilish uni joyida yoki a dan foydalanish virtual mashina (masalan, bilan Java ) va Faqat vaqt ichida kompilyatsiyasi.

Apollon

Apollonning birikma dasturlari

1988 yilda, Apollon kompyuteri "s Domen / OS SR10.1 yangi fayl turini taqdim etdi, "cmpexe" (bajariladigan birikma), u uchun ikkilangan fayllar to'plami Motorola 680x0 va Apollon PRISM bajariladigan fayllar.[3]

olma

Olmaning yog 'ikkilik

Yog 'ikkilik sxemasi yumshatildi Apple Macintosh 1994 yildan boshlab, o'tish davri 68k uchun mikroprotsessorlar PowerPC mikroprotsessorlar. Eski platforma uchun ko'plab dasturlar rivojlanayotgan yangi platformada shaffof ravishda ishladi taqlid qilish sxemasi, lekin taqlid qilingan kod odatda mahalliy koddan sekinroq ishlaydi. "Yog'li ikkiliklar" sifatida chiqarilgan dasturlar ko'proq joy egallashdi, ammo ular har qanday platformada to'liq tezlikda ishladilar. Bunga ikkala mahsulotni qadoqlash orqali erishildi 68000 - kompilyatsiya qilingan versiya va shu dasturning PowerPC tomonidan tuzilgan versiyasi, ularning bajariladigan fayllariga. Qadimgi 68K kodi (CFM-68K yoki klassik 68K) manba vilkasi, yangi PowerPC kodi tarkibiga kiritilgan bo'lsa ma'lumotlar vilkasi, yilda PEF format.[4]

Yog 'ikkiliklari faqat PowerPC yoki 68k-ni qo'llab-quvvatlaydigan dasturlardan kattaroq edi, bu esa keraksiz versiyani o'chirib tashlaydigan bir qator yordam dasturlarini yaratishga olib keldi. Kichkina davrda qattiq disklar, 80 MB qattiq disklar umumiy hajmda bo'lganida, ba'zida ushbu yordam dasturlari foydalidir, chunki dastur kodi odatda haydovchidan foydalanishning katta foizini tashkil qiladi va yog 'ikkilikning keraksiz a'zolarini echib olish qattiq diskda katta hajmdagi bo'sh joyni bo'shatadi. haydash.

NeXT / Apple-ning ko'p me'moriy binarlari

NeXTSTEP ko'p me'moriy binariyalar

Yog 'ikkiliklari bir xususiyati edi Keyingisi "s Keyingi qadam / NeXTSTEP 3.1 dan boshlab OPENSTEP operatsion tizimi. NeXTSTEP-da ular "Ko'p arxitektura binarlari" deb nomlangan. Ko'p arxitektura binarlari dastlab NeXT-ning Motorola 68k-ga asoslangan apparatida va Intel-da ishlash uchun dasturiy ta'minotni tuzishga imkon berish uchun mo'ljallangan edi. IA-32 asoslangan Kompyuterlar ikkala platforma uchun bitta ikkilik fayl bilan NeXTSTEP-ni ishga tushiradi. Keyinchalik u OPENSTEP dasturlarining shaxsiy kompyuterlarda ishlashiga imkon berish uchun ishlatilgan va har xil RISC OPENSTEP platformalari qo'llab-quvvatlanadi. Ko'p arxitektura Ikkilik fayllari maxsus arxiv formatida bo'lib, unda bitta fayl bir yoki bir nechtasini saqlaydi Mach-O Multi-Architecture Binary tomonidan qo'llab-quvvatlanadigan har bir arxitektura uchun pastki fayllar. Har bir Multi-Architecture Binary ikkita imzosiz butun sonni o'z ichiga olgan strukturadan (struct fat_header) boshlanadi. Birinchi tamsayı ("sehrli") a sifatida ishlatiladi sehrli raqam ushbu faylni Yog'li Ikkilik sifatida aniqlash. Ikkinchi butun son ("nfat_arch") arxivda qancha Mach-O Fayllar borligini aniqlaydi (turli xil arxitekturalar uchun bitta dasturning nechta nusxasi). Ushbu sarlavhadan keyin mavjud nfat_arch fat_arch tuzilmalari soni (struct fat_arch). Ushbu tuzilma Mach-O ikkilik (arxiv ichida) yo'naltirilgan faylni, hizalamayı, hajmini va CPU turini va pastki turini topadigan ofsetni (fayl boshidan) belgilaydi.

Ning versiyasi GNU kompilyatori to'plami Tuzuvchi vositalari bilan jo'natildi o'zaro kompilyatsiya qilish turli xil arxitekturalar uchun manba kodi Keyingi qadam yugurishga muvaffaq bo'ldi. Masalan, maqsadli arxitekturalarni bir nechta '-arch' variantlari bilan tanlash mumkin edi (arxitektura argument sifatida). Bu turli xil arxitekturalarda ishlaydigan NeXTStep dasturini tarqatishning qulay usuli edi.

Shuningdek, turli xil maqsadli fayllar bilan kutubxonalar yaratish mumkin edi (masalan, libtool yordamida).

Mach-O va Mac OS X

Apple Computer NeXT-ni 1996 yilda sotib olgan va OPENSTEP kodi bilan ishlashni davom ettirgan. Mach-O Apple-ning asl ob'ekt fayl formatiga aylandi Darvin operatsion tizimi (2000) va Apple kompaniyalari Mac OS X (2001) va NeXT Multi-Architecture Binaries operatsion tizim tomonidan qo'llab-quvvatlanishda davom etdi. Mac OS X ostida Multi-Architecture Binaries arxitekturaning bir nechta variantini qo'llab-quvvatlash uchun ishlatilishi mumkin, masalan, 32-bit uchun optimallashtirilgan kod PowerPC G3, PowerPC G4 va PowerPC 970 protsessorlarning avlodlari. Bundan tashqari, u bir nechta arxitekturalarni qo'llab-quvvatlash uchun ishlatilishi mumkin, masalan, 32-bit va 64-bit PowerPC yoki PowerPC va x86.[5]

Apple-ning Universal ikkilik

olma Umumjahon ikkilik logotip

2005 yilda Apple boshqasini e'lon qildi o'tish, PowerPC protsessorlaridan Intel x86 protsessorlariga. Apple PowerPC va x86-ni qo'llab-quvvatlaydigan yangi dasturlarning tarqatilishini targ'ib qildi Multi-Architecture Binary formatida bajariladigan fayllar. Apple bunday dasturlarni chaqiradi "Umumjahon dasturlar "va fayl formatini chaqiradi"Umumjahon ikkilik "ehtimol bu yangi o'tishni avvalgi o'tishdan farqlash usuli yoki Multi-Architecture Binary formatining boshqa ishlatilishlari.

Oldindan mavjud bo'lgan mahalliy PowerPC dasturlarini oldinga ko'chirish uchun universal ikkilik format zarur emas edi; 2006 yildan 2011 yilgacha Apple etkazib berdi Rozetta, PowerPC (PPC) -to-x86 dinamik ikkilik tarjimon, bu rolni o'ynash. Biroq, Rosetta juda yuqori ishlashga ega edi, shuning uchun ishlab chiquvchilar Universal ikkiliklardan foydalangan holda PPC va Intel ikkiliklarini taklif qilishlari tavsiya qilindi. Universal ikkilikning aniq qiymati shundaki, har bir o'rnatilgan bajariladigan fayl kattaroqdir, ammo PPC chiqarilgandan keyingi yillarda qattiq disk maydoni bajariladigan hajmdan ancha ustun bo'lib qoldi; Universal ikkilik bir xil dasturning bitta platformali versiyasidan ikki baravar katta bo'lishi mumkin bo'lsa, bo'sh joy resurslari odatda kod hajmini mitti qiladi, bu esa kichik muammoga aylanadi. Aslida, ko'pincha Universal-ikkilik dastur ikkita bitta arxitektura dasturidan kichikroq bo'ladi, chunki dastur resurslari takrorlanmasdan emas, balki birgalikda ishlatilishi mumkin. Agar barcha me'morchilik talab qilinmasa, lipo va ditto buyruq qatori dasturlari yordamida Multi-Architecture Binary tasviridan versiyalarni olib tashlash va shu bilan ba'zan a deb nomlanadigan narsa yaratish mumkin yupqa ikkilik.

Bundan tashqari, Multi-Architecture Binary executable dasturlari PowerPC va x86 ning 32 va 64 bitli versiyalari uchun kodlarni o'z ichiga olishi mumkin, bu dasturlarni 32 bitli protsessorlarni qo'llab-quvvatlaydigan, ammo kattaroq manzil maydonidan foydalanadigan shaklda yuborilishini ta'minlaydi. 64 bitli protsessorlarda ishlayotganda kengroq ma'lumot yo'llari.

Versiyalarida Xkod 2,1 dan 3,2 gacha bo'lgan rivojlanish muhiti (ishlaydigan holda) Mac OS X 10.4 orqali Mac OS X 10.6 ), Apple dasturlari Intel va PowerPC arxitekturalari uchun maqsadli bo'lishiga imkon beruvchi yordam dasturlarini o'z ichiga olgan; universal ikkiliklar oxir-oqibat bajariladigan kodning to'rtta versiyasini o'z ichiga olishi mumkin (32-bit PowerPC, 32-bit x86, 64-bit PowerPC va 64 bitli x86 ). Biroq, PowerPC yordami Xcode 4.0 dan o'chirildi va shuning uchun ishlaydigan dasturchilar uchun mavjud emas Mac OS X 10.7 yoki undan katta.

2020 yilda Apple boshqasini e'lon qildi o'tish, bu safar Intel x86 protsessorlaridan Apple kremniyiga o'tish. O'tishni yumshatish uchun Apple qo'llab-quvvatladi Universal 2 ikkilik format. Bu 64-bitli Intel va 64-bitli Apple silikonida (an. 64) ishlaydigan tabiiy fayllarni yaratishga imkon beradi Arx64 variant).

DOS

CP / M-80 va DOS uchun COM-uslubidagi birlashtirilgan ikkilik fayllar

CP / M-80, MP / M-80, Bir vaqtning o'zida CP / M, CP / M Plus va Shaxsiy CP / M-80 uchun bajariladigan fayllar Intel 8080 (va Z80 ) protsessor oilalari ham xuddi shunday foydalanadi .COM fayl kengaytmasi kabi DOS uchun mos operatsion tizimlar Intel 8086 ikkiliklar.[nb 1] Ikkala holatda ham dasturlar 100 soatlik ofsetda yuklanadi va faylning birinchi baytiga o'tish orqali bajariladi. Sifatida opkodlar ikkita protsessor oilasidan biri mos kelmaydi, noto'g'ri operatsion tizim ostida dasturni ishga tushirishga urinish noto'g'ri va oldindan aytib bo'lmaydigan xatti-harakatlarga olib keladi.

Bunga yo'l qo'ymaslik uchun CP / M-80 va DOS dasturlarini o'z ichiga olgan semiz ikkiliklarni yaratish bo'yicha ba'zi usullar ishlab chiqilgan, ulardan oldin ikkala platformada to'g'ri talqin qilingan dastlabki kod mavjud. Usullar mos keladigan muhit uchun yaratilgan ikkita to'liq ishlaydigan ikkita dasturni birlashtiradi yoki qo'shadi stublar bu noto'g'ri protsessorda ishga tushirilsa, dasturning chiroyli chiqishiga olib keladi. Buning uchun .COM faylidagi dastlabki ko'rsatmalar 8086 va 8080 protsessorlari uchun to'g'ri kod bo'lishi kerak, bu esa protsessorlarning kod ichidagi turli joylarga tarqalishiga olib keladi. Masalan, Simeon Cran-ning emulyatori MyZ80. opcode ketma-ketligidan boshlang EBh, 52 soat, EBh. 8086 buni sakrash deb biladi va navbatdagi ko'rsatmalarni + 154 soatlik ofsetdan o'qiydi, 8080 yoki mos keladigan protsessor to'g'ridan-to'g'ri o'tib, keyingi ko'rsatmalarni + 103 soat dan o'qiydi. Shu maqsadda ishlatiladigan shunga o'xshash ketma-ketlik EBh, 03h, C3h.[6][7]

DOS-ga mos keladigan operatsion tizimni CP / M-80 va .COM dasturlarini noto'g'ri bajarilishidan saqlashning yana bir usuli. MSX-DOS mashinalari 8080 kodini boshlashi kerak C3h, 03h, 01h, x86 protsessorlari tomonidan "RET" buyrug'i sifatida dekodlangan va shu bilan dasturdan xushmuomalalik bilan chiqib ketayotgan bo'lsa, u 8080 protsessor tomonidan "JP 103h" buyrug'i sifatida dekodlanadi va shunchaki dasturning keyingi ko'rsatmasiga o'tiladi.

Biroz CP / M-80 3.0 .COM fayllarida bittasi yoki bittasi bo'lishi mumkin RSX ularga GENCOM tomonidan biriktirilgan qoplamalar.[8] Agar shunday bo'lsa, ular qo'shimcha bilan boshlanadi 256 bayt sarlavha (bitta sahifa ). Buni ko'rsatish uchun sarlavhadagi birinchi bayt o'rnatilgan C9h, ikkalasi ham ushbu turdagi COM faylini CP / M 3.0 ga moslashtiruvchi imzo sifatida ishlaydi bajariladigan yuklovchi, shuningdek, 8080 ta mos protsessorlar uchun "RET" ko'rsatmasi, agar u CP / M-80 ning eski versiyalari ostida bajarilgan bo'lsa, oqilona chiqishga olib keladi.

C9h har qanday x86 protsessori uchun dasturning birinchi bayti sifatida hech qachon mos kelmaydi (u turli avlodlar uchun har xil ma'noga ega,[nb 2] lekin hech qachon mazmunli birinchi bayt emas); DOS-ning ba'zi versiyalaridagi bajariladigan yuklovchi bilan boshlanadigan MAQOMOTI fayllarini rad etadi C9h, noto'g'ri ishlashdan saqlanish.

CP / M-86 va DOS uchun birlashtirilgan ikkilik fayllar

CP / M-86 va DOS dasturlari bajariladigan fayllar uchun umumiy fayl kengaytmasiga ega emas.[nb 1] Shunday qilib, odatda bajariladigan fayllarni chalkashtirib yuborish mumkin emas. Ammo DOS-ning dastlabki versiyalari uning arxitekturasi jihatidan CP / M bilan juda ko'p o'xshashliklarga ega ediki, ba'zi dastlabki DOS dasturlari bajariladigan kodlarni o'z ichiga olgan ikkiliklarni bo'lishish uchun ishlab chiqilgan. Buning ma'lum bo'lgan dasturlaridan biri edi WordStar 3.2x bir xil ishlatilgan fayllarni joylashtirish ularning portlarida CP / M-86 va MS-DOS,[9] va ushbu operatsion tizimlarning turli xil qo'ng'iroq konventsiyalariga moslashish uchun dinamik ravishda belgilangan koddan foydalanilgan ish vaqti.[9]

Raqamli tadqiqotlar "s GSX CP / M-86 va DOS uchun ikkitomonlama bir xil 16 bitli drayverlarga ulanadi.[10]

MAQOMOTI va SYS fayllari

DOS qurilma drayverlari dastlabki to'rt bayt bo'lgan fayl sarlavhasidan boshlang FFFFFFFFh shartnoma bo'yicha, garchi bu shart emas.[11] Bu haydovchi operatsion tizim tomonidan dinamik ravishda o'rnatiladi yuklar (odatda DOS BIOS u ijro etilganda QURILMA bayonotlar CONFIG.SYS ). DOS qurilmasi .COM kengaytmasi bilan yuklanadigan fayllarni rad etmasligi va FFFFFFFFh uchun sinov o'tkazmasligi sababli, COM dasturi va qurilma drayverini bir xil faylga birlashtirish mumkin[12][11] faylning dastlabki to'rt baytida kiritilgan COM dasturining kirish nuqtasiga sakrash buyrug'ini joylashtirish orqali (odatda uchta bayt etarli).[11] Agar o'rnatilgan dastur va qurilma drayveri bo'limlari kodning umumiy qismini yoki ma'lumotlarini baham ko'rsa, kod uchun .COM uslubidagi dastur sifatida ofset + 0100h va qurilma drayveri sifatida + 0000h da yuklash kerak.[12] "Noto'g'ri" ofsetda yuklangan, lekin u uchun mo'ljallanmagan umumiy kod uchun pozitsiyadan mustaqil, bu ichki manzilni tuzatishni talab qiladi[12] aks holda allaqachon amalga oshirilgan narsaga o'xshash ko'chirgich, bundan mustasno, bu holda uni yuklangan dastur o'zi bajarishi kerak; bu vaziyatga o'xshaydi o'z-o'zini ko'chiradigan haydovchilar ammo operatsion tizimning yuklagichi tomonidan maqsadli joyda allaqachon o'rnatilgan dastur bilan.

Nosozlikdan himoyalangan tizim fayllari

DOS ostida ba'zi fayllar, odatdagidek, ularning haqiqiy fayl turini aks ettirmaydigan fayl kengaytmalariga ega.[nb 3] Masalan, COUNTRY.SYS[13] DOS qurilmasi drayveri emas,[nb 4] lekin ikkilik NLS CONFIG.SYS bilan ishlash uchun ma'lumotlar bazasi fayli COUNTRY direktivasi va NLSFUNC haydovchi.[13] PC DOS va DR-DOS tizim fayllari IBMBIO.COM va IBMDOS.COM MAQOMOTI uslubidagi dasturlar emas, balki maxsus ikkilik tasvirlar.[nb 4] COUNTRY.SYS-ni DEVICE bayonoti bilan yuklashga urinish yoki buyruq satrida IBMBIO.COM yoki IBMDOS.COM-ni bajarish kutilmagan natijalarga olib keladi.[nb 3][nb 5]

Ba'zida yuqorida aytib o'tilganlarga o'xshash texnikani qo'llash orqali bunga yo'l qo'ymaslik mumkin. Masalan, DR-DOS 7.02 va undan yuqori darajasida Matthias R. Paul tomonidan ishlab chiqilgan xavfsizlik xususiyati mavjud:[14] Agar ushbu fayllar nomaqbul deb nomlangan bo'lsa, kichik ko'milgan stublar shunchaki ba'zi bir fayl versiyalari ma'lumotlarini aks ettiradi va chiroyli chiqib ketadi.[15][14][16][13]

Shunga o'xshash himoya xususiyati 8080 yo'riqnomasi edi C7 soat ("RST 0") Z-System tizimining boshlanishida, natijada a iliq boshlash (qulab tushish o'rniga) CP / M-80 ostida, agar noo'rin yuklangan bo'lsa.[17]

Masofadan o'xshash tarzda, ko'p (ikkilik) fayl formatlari Konventsiya bo'yicha a 1Ah bayt (ASCII ^ Z ) fayl boshiga yaqin. Bu boshqaruv belgisi "yumshoq" deb talqin qilinadi fayl oxiri Fayl ikkilik bo'lmagan rejimda ochilganda va shu bilan ko'plab operatsion tizimlarda (shu jumladan) (EOF) belgisi RT-11, VMS, CP / M,[18][19] DOS,[20] va Windows[21]), fayl tasodifan konsolda yozilganda "ikkilik axlat" ko'rsatilishini oldini oladi.

Linux

FatELF: Linux uchun universal ikkiliklar

FATELF logotip

FATELF[22] uchun yog 'ikkilik dasturidir Linux va boshqalar Unixga o'xshash operatsion tizimlar. Texnik jihatdan, FatELF ikkilik birlashmasidir ELF qaysi arxitekturada qaysi ikkilikni ishlatishni ko'rsatadigan ba'zi meta ma'lumotlar bilan ikkiliklar.[23] CPU arxitekturasi abstraktsiyasiga qo'shimcha ravishda (bayt tartibi, so'z hajmi, Markaziy protsessor buyruqlar to'plami va boshqalar), bir nechta yadroni qo'llab-quvvatlaydigan ikkiliklarning afzalligi bor ABI va versiyalari.

FatELF dasturida ishlab chiquvchilarning fikriga ko'ra bir nechta foydalanish holatlari mavjud:[22]

  • Endi tarqatish uchun turli platformalar uchun alohida yuklamalar bo'lishi shart emas.
  • Alohida / lib, / lib32 va / lib64 daraxtlar endi talab qilinmaydi OS katalogi tuzilishi.
  • To'g'ri ikkilik va kutubxonalar o'rniga markaz tomonidan tanlanadi qobiq skriptlari.
  • Agar ELF ABI bir kun o'zgarsa, eski foydalanuvchilar hali ham qo'llab-quvvatlanishi mumkin.
  • Bir nechta platformalar bilan ishlaydigan veb-brauzer plaginlarini tarqatish.
  • Linuxda ishlaydigan bitta dastur faylini tarqatish va BSD OS variantlar, ulardagi platforma muvofiqligi qatlami yo'q.
  • Bitta qattiq disk bo'limi ishlab chiqish va tajriba o'tkazish uchun har xil CPU arxitekturasiga ega bo'lgan turli xil mashinalarda yuklanishi mumkin. Xuddi shu ildiz fayl tizimi, turli xil yadro va CPU arxitekturasi.
  • Tarmoq almashinuvi yoki USB stik bilan ta'minlangan dasturlar bir nechta tizimlarda ishlaydi. Bu yaratish uchun ham foydalidir ko'chma dasturlar va shuningdek bulutli hisoblash heterojen tizimlar uchun tasvirlar.[24]

Kontseptsiyaning isboti Ubuntu 9.04 rasm mavjud.[25] 2020 yil 25-aprel holatiga ko'ra, FatELF asosiy Linux yadrosiga qo'shilmagan.[iqtibos kerak ][26][27]

Windows

Fatpack

Garchi Portativ bajariladigan Windows tomonidan ishlatiladigan format platformalarga kod berishga imkon bermaydi, baribir arxitektura asosida jo'natadigan yuklovchi dastur tuzish mumkin. Buning sababi, Windows-ning ARM-da ish stoli versiyalari 32-bitni qo'llab-quvvatlaydi x86 taqlid qilish, uni foydali "universal" mashina kodi maqsadiga aylantirish. Fatpack - bu kontseptsiyani namoyish qiluvchi yuklovchi: uning resurs qismlariga qadoqlangan bajariladigan fayllarni birma-bir ishga tushirishga harakat qiladigan 32 bitli x86 dasturi mavjud.[28]

Shunga o'xshash tizimlar

Quyidagi yondashuvlar bir xil faylda bir xil maqsaddagi kompyuter kodlarining bir nechta versiyalari taqdim etilganligi sababli semiz ikkiliklarga o'xshashdir.

Yog'li narsalar

GCC va LLVM tarkibida yog 'ikkilik formati yo'q, ammo ularda yog' bor ob'ekt fayllari uchun ulanish vaqtini optimallashtirish (LTO). LTO kompilyatsiya vaqtini kechiktirishni o'z ichiga olganligi sababli ob'ekt fayllari saqlash kerak oraliq vakillik, lekin boshqa tomondan mashina kodini ham saqlash kerak bo'lishi mumkin (tezligi yoki mosligi uchun). Ikkala IR va mashina kodlarini o'z ichiga olgan LTO ob'ekti a sifatida tanilgan semiz narsa.[29]

Funktsiyaning ko'p versiyali versiyasi

Hatto dasturda yoki kutubxona xuddi shu narsaga mo'ljallangan ko'rsatmalar to'plami arxitekturasi, dasturchi eski protsessor bilan mosligini saqlab, ba'zi bir yangi ko'rsatmalar to'plamining kengaytmalaridan foydalanishni xohlashi mumkin. Bunga erishish mumkin funktsiyaning ko'p versiyali versiyasi (FMV): xuddi shu funktsiyalarning versiyalari dasturga yoziladi va kodning bir qismi protsessorning imkoniyatlarini aniqlash orqali (masalan, CPUID ). Intel C ++ kompilyatori, GNU kompilyatori to'plami va LLVM barchasi avtomatik ravishda ko'p versiyali funktsiyalarni yaratish qobiliyatiga ega.[30] Bu shakl dinamik jo'natish hech qanday semantik ta'sirsiz.

Ko'pgina matematik kutubxonalarda protsessor imkoniyatiga ko'ra avtomatik ravishda tanlanadigan qo'lda yozilgan yig'ish tartiblari mavjud. Bunga misollar kiradi glibc, Intel MKL va OpenBLAS. Bundan tashqari, glibc-dagi kutubxona yuklagichi o'ziga xos CPU funktsiyalari uchun muqobil yo'llardan yuklashni qo'llab-quvvatlaydi.[31]

Shuningdek qarang

Izohlar

  1. ^ a b CP / M-86 uslubidagi bajariladigan fayllar uchun bu muammo emas CP / M-86, CP / M-86 Plus, Shaxsiy CP / M-86, S5-DOS, Bir vaqtning o'zida CP / M-86, Bir vaqtning o'zida DOS, Bir vaqtning o'zida DOS 286, FlexOS, Bir vaqtning o'zida DOS 386, DOS Plus, Multiuser DOS, Tizim menejeri va REAL / 32 chunki ular fayl kengaytmasidan foydalanadilar .CMD dan ko'ra .COM ushbu fayllar uchun. (Ammo .CMD kengaytmasi uchun kengaytmasi bilan ziddiyatli ommaviy ish uchun yozilgan buyruq satri protsessori CMD.EXE ostida OS / 2 va Windows NT operatsion tizim oilalari.)
  2. ^ Yoqilgan 8088 /8086 protsessorlar, opcode C9h uchun hujjatsiz taxallus CBh ("RETF"), u esa "LEAVE" sifatida dekodlanadi 80188 /80186 va yangi protsessorlar.
  3. ^ a b Qarama-qarshi bo'lmagan tanlov orqali ushbu muammodan qochish mumkin edi fayl kengaytmalari, lekin kiritilgandan so'ng, ushbu fayl nomlari juda erta versiyalarida saqlanib qoldi MS-DOS /Kompyuter DOS (uchinchi tomon) vositalar bilan mosligi sababli ushbu maxsus fayl nomlarini kutish qiyin.
  4. ^ a b Boshqalar DOS ushbu turdagi fayllar KEYBOARD.SYS, ikkilik klaviatura tartibi klaviatura drayveri uchun ma'lumotlar bazasi fayli KEYB ostida MS-DOS va Kompyuter DOS, IO.SYS o'z ichiga olgan DOS BIOS MS-DOS ostida va MSDOS.SYS, ostida matn konfiguratsiyasi fayli Windows 95 /MS-DOS 7.0 va undan yuqori, lekin dastlab MS-DOS-ni o'z ichiga olgan ikkilik tizim fayli yadro. Ammo MS-DOS va PC DOS tizimlari buzilishlardan himoyalangan tizim fayllarini umuman ta'minlamaydi va ushbu fayl nomlari ishlatilmaydi va kerak emas DR-DOS 7.02 va undan yuqori, bu aks holda buzilishdan himoyalangan tizim fayllarini taqdim etadi.
  5. ^ Ushbu fayllar quyidagilarga ega bo'lishining sababi yashirin xususiyat sozlang, shunda ular sukut bo'yicha ro'yxatga olinmaydi va shu bilan tasodifan chaqirilish xavfini kamaytiradi.

Adabiyotlar

  1. ^ "PackagingDrafts / GNUstep". Fedora loyihasi Wiki.
  2. ^ "gnustep / tools-make: README.Packaging". GitHub.
  3. ^ "Domen tizimining dasturiy ta'minotini chiqarishga oid eslatmalar, dasturiy ta'minotning 10.1 versiyasi (PDF) (birinchi bosma nashr). Chelmsford, Massachusets, AQSh: Apollo Computer Inc. Dekabr 1988. p. 2-16. Buyurtma raqami 005809-A03. Arxivlandi (PDF) asl nusxasidan 2020-08-27. Olingan 2020-08-17. (256 bet)
  4. ^ Apple Computer (1997-03-11). "Yog 'ikkilik dasturlarini yaratish". Macintosh ichida: Mac OS Runtime Architectures. Arxivlandi asl nusxasi 2004-03-07 da. Olingan 2011-06-20.
  5. ^ Apple Computer (2006-03-08). "Universal Binaries va 32-bit / 64-bit PowerPC Binaries". Mac OS X ABI Mach-O fayl formati ma'lumotnomasi. Arxivlandi asl nusxasi 2009-04-04 da. Olingan 2006-07-13.
  6. ^ ChristW (2012-11-14) [2012-11-13]. Chen, Raymond (tahrir). "Microsoft Money hisobvaraq operatsiyalarini import qilish paytida yoki yuklab olingan tranzaksiya oluvchisini o'zgartirganda ishdan chiqadi". Yangi eski narsa. Arxivlandi asl nusxasi 2018-07-05 da. Olingan 2018-05-19. […] Baytlar ketma-ketligi […] EB 03 C3 yy xx […] Agar siz a .COM fayli birinchi 5 bayt bilan […] siz "JMP SHORT 3", so'ngra 3 axlat baytini ko'rasiz. […] Agar siz a ga qarasangiz Z80 "EX DE, HL" ga tarjima qilingan demontaj […]; Miloddan avvalgi INC; ' […] Uchinchi bayt - "JUMP", so'ngra yy xx sifatida ko'rsatilgan 16-bitli manzil […] sizda ishlaydigan .COM fayli bo'ladi. MS-DOS va […] CP / M […] (NB. Muallif Z80 haqida gapirganda, ushbu ketma-ketlik ham ishlaydi 8080 va mos protsessorlar.)
  7. ^ Brehm, Endryu J. (2016). "CP / M va MS-DOS Fat Binary". DesertPenguin.org. Arxivlandi asl nusxasidan 2018-05-19. Olingan 2018-05-19. (NB. Maqolada. Haqida gapirilgan bo'lsa-da Z80, kod ketma-ketligi ham ustida ishlaydi 8080 va mos protsessorlar.)
  8. ^ Elliott, Jon S.; Lopushinskiy, Jim (2002) [1998-04-11]. "CP / M 3 COM faylining sarlavhasi". Seasip.info. Arxivlandi asl nusxasidan 2016-08-30. Olingan 2016-08-29.
  9. ^ a b Nekasek, Mixal (2018-01-30) [2018-01-28, 2018-01-26]. "Yana WordStar". OS / 2 muzeyi. Arxivlandi asl nusxasidan 2019-07-28. Olingan 2019-07-28. […] Bunday farqni shubha ostiga olishning sababi shundaki, 3.2x versiyasi ham qo'llab-quvvatlanadi CP / M-86 (the qoplamalar o'rtasida bir xil DOS va CP / M-86, faqat asosiy bajariladigan dastur boshqacha) [...] .OVR fayllari DOS va CP / M-86 o'rtasida 100% bir xil, bayroq bilan (aniq ko'rsatilgan WordStar 3.20 qo'llanma) ular o'rtasida ish vaqtida o'tish [...] WordStar-da OS interfeysi juda tor va yaxshi mavhumlangan [...] WordStar 3.2x qo'shimchalari DOS va CP / M-86 versiyalari o'rtasida 100% bir xil. INT 21h (DOS) va INT E0h (CP / M-86) o'rtasida qo'ng'iroq qilishni tanlaydigan ish vaqti tugmasi mavjud. WS.COM DOS va CP / M-86 o'rtasida bir xil emas, garchi u ham unchalik farq qilmasa ham. […]
  10. ^ Qaytadan, Natan. "GSX ekran tasvirlari". Toastytech.com. Arxivlandi asl nusxasidan 2020-01-15. Olingan 2020-01-15.
  11. ^ a b v Pol, Mattias R. (2002-04-11). "Re: [fd-dev] E'LON: CuteMouse 2.0 alfa 1". liberos-dev. Arxivlandi asl nusxasidan 2020-02-21. Olingan 2020-02-21. […] FreeKEYB - bu [...] haqiqiy .COM va .SYS drayveri (kichik model). Siz birinchi JMP-ni xavfsiz ustiga yozishingiz mumkin, bu men uchun "hiyla-nayrang sarlavhasi" degani. […] Siz FFFFh: FFFFh o'rnini 3 baytli sakrash va kutilayotgan JB FFh bilan almashtirishingiz mumkin. U MS-DOS, PC DOS, DR-DOS va, ehtimol boshqa har qanday DOS bilan ishlaydi. […]
  12. ^ a b v Pol, Mattias R. (2002-04-06). "Re: [fd-dev] E'LON: CuteMouse 2.0 alfa 1". liberos-dev. Arxivlandi asl nusxasidan 2020-02-07. Olingan 2020-02-07. […] CTMOUSE ikkalasi ham oddiy bo'lishi uchun haydovchiga SYS qurilmasi drayverining sarlavhasini qo'shing. TSR va qurilma drayveri - bizning FreeKEYB rivojlangan klaviatura drayverimizga o'xshash. […] Bu aslida kerak emas DR DOS chunki O'RNATISH = qo'llab-quvvatlanadi, chunki DR DOS 3.41+ va DR DOS tartibini saqlaydi [D] CONFIG.SYS direktivalar […], ammo bu […] moslashuvchanlikni [...] yaxshilaydi MS-DOS /Kompyuter DOS [...] har doim bajaradigan tizimlar QURILMA = har qanday O'RNATISH oldidan ko'rsatmalar = fayldagi tartibidan qat'i nazar, bayonotlar. […] Dasturiy ta'minot sichqoncha drayverini qurilma drayveri sifatida ishtirok etishni talab qilishi mumkin, chunki sichqoncha drayverlari qadimgi zamonlarda ham qurilma drayveri bo'lgan. Ushbu sichqonchani drayverlari qaysi protokoldan foydalanganiga qarab ("Kompyuter $ MOUSE " uchun Sichqoncha tizimlari rejimi masalan) va ba'zi dasturlar sichqonchaning to'g'ri ishlatilishini aniqlash uchun ushbu drayverlarni qidirishi mumkin. […] Yana bir afzalligi shundaki, qurilma drayverlari odatda kam xotira sarflashadi (yo'q atrof-muhit, yo'q PSP ) […] Bu asosan hiyla-nayrang fayl sarlavhasi, buyruq satrini tahlil qilish uchun boshqa kod, kirish nuqtasi va chiqish satrining boshqa satri va ORG 0 / ORG 100 soatlik farqni engish uchun ba'zi segment sehrlari. O'z-o'zidan yuk ko'tarish qurilma drayveri biroz hiyla-nayrang qiladi, chunki siz haydovchi sarlavhasini qaerda qoldirishingiz va faqat haydovchining qolgan qismini boshqa joyga ko'chirishingiz kerak […]
  13. ^ a b v Pol, Matias R. (2001-06-10) [1995]. "DOS COUNTRY.SYS fayl formati" (COUNTRY.LST fayli) (1.44 tahr.). Arxivlandi asl nusxasidan 2016-04-20. Olingan 2016-08-20.
  14. ^ a b Paul, Mattias R. (1997-07-30) [1994-05-01]. "II.4-bob. Undokumentierte Eigenschaften externer Kommandos - SYS.COM". NWDOS-Maslahatlar - Maslahatlar va fokuslar, Novell DOS 7, Blick auf undokumentierte details, Xatolar va vaqtinchalik echimlar. MPDOSTIP. 157-nashr (nemis tilida) (3 nashr). Arxivlandi asl nusxasidan 2017-09-10. Olingan 2014-08-06. Calderas OpenDOS 7.01 dasturini yangilash uchun Startcode von IBMBIO.COM so modifiziert, daß er-tushadi fälschlicherweise als normales Programm gestartet - ohne Absturz zur Kommandozeile zurückkehrt. Wann diese Sicherheitsfunktion in die offizielle Version Einzug halten wird, no jedoch noch nicht abzusehen. (NB. NWDOSTIP.TXT - bu Novell DOS 7 va OpenDOS 7.01-dagi keng qamrovli ish, shu jumladan ko'plab hujjatsiz xususiyatlar va ichki qismlarning tavsifini o'z ichiga oladi. Bu muallifning hali ham kattaroq qismidir. MPDOSTIP.ZIP to'plam 2001 yilgacha saqlanib qolgan va o'sha paytda ko'plab saytlarda tarqatilgan. Taqdim etilgan havola HTML-ga o'zgartirilgan eski versiyasiga ishora qiladi NWDOSTIP.TXT fayl.) [1]
  15. ^ Pol, Mattias R. (1997-10-02). "Caldera OpenDOS 7.01 / 7.02 yangilanishi Alpha 3 IBMBIO.COM README.TXT". Arxivlandi asl nusxasi 2003-10-04. Olingan 2009-03-29. [2]
  16. ^ DR-DOS 7.03 WHATSNEW.TXT - DR-DOS 7.02 dan DR-DOS 7.03 ga o'zgartirish. Caldera, Inc. 1998-12-24. Arxivlandi asl nusxasi 2019-04-08 da. Olingan 2019-04-08.
  17. ^ Sage, Jey (1992 yil noyabr - dekabr). Karlson, san'at; Kibler, Bill D. (tahr.). "Doimiy xususiyat, ZCPR-ni qo'llab-quvvatlash, til mustaqilligi, 2-qism". Kompyuter jurnali (TCJ) - dasturlash, foydalanuvchini qo'llab-quvvatlash, dasturlar. Z-tizim burchagi. Linkoln, Kaliforniya, AQSh (58): 7-10. ISSN  0748-9331. ark: / 13960 / t70v9g87h. Olingan 2020-02-09. […] "RST 0" opcode mavjud edi, agar u bajarilsa a ga olib keladi issiq yuklash. Z3TXT modulini o'z ichiga olgan fayl hech qachon bajarilmasligi kerak, lekin bir bayt evaziga biz o'zimizni tashqi imkoniyatdan himoya qila olamiz. Sarlavhada "Z3TXT" belgilar qatori, so'ngra null (0) bayt bor edi. Ko'pgina Z-System modullarida bunday identifikatorlar mavjud. Ushbu turkumda rezident buyruqlar to'plami (RCP), oqim buyrug'i paketlari (FCP) va atrof-muhit tavsiflovchi modullar (Z3ENV) mavjud. Ushbu modullarni xotiradan xotiraga yuklaydigan Bridger Mitchell's […] JETLDR.COM kabi dasturlar identifikator satridan foydalanib faylni tasdiqlashi, ya'ni foydalanuvchi aytgan modul turiga ishonch hosil qilishi mumkin. bolmoq. Shunday qilib foydalanuvchi xatolari va buzilgan fayllarni aniqlash mumkin. […] Shunday qilib, sarlavha hozir quyidagicha: […] rst […] db 'Z3TXT', 0; bekor qilingan ID […]; 12345678; 8 ta belgidan iborat bo'lishi kerak, […] db 'PROGNAME'; bo'shliqlar bilan to'ldirish […]; 123; 3 ta belgidan iborat bo'lishi kerak […] db 'ENG'; tilning nomi […] dw LENGTH; modul uzunligi […] [3][4]
  18. ^ "2. Operatsion tizimning qo'ng'iroq konvensiyalari". CP / M 2.0 interfeysi bo'yicha qo'llanma (PDF) (1 nashr). Pacific Grove, Kaliforniya, AQSh: Raqamli tadqiqotlar. 1979. p. 5. Arxivlandi (PDF) asl nusxasidan 2020-02-28. Olingan 2020-02-28. […] An oxiri ASCII fayl a bilan belgilanadi boshqarish-Z belgisi (1AH) yoki faylning haqiqiy uchi, tomonidan qaytarilgan CP / M o'qish jarayoni. Mashina kodi fayllariga kiritilgan Control-Z belgilar (masalan, MAQOMOTI fayllari ) e'tiborga olinmaydi va CP / M tomonidan qaytarilgan fayl holatining oxiri o'qish operatsiyalarini tugatish uchun ishlatiladi. […] (56 bet)
  19. ^ Hogan, Thom (1982). "3. CP / M vaqtinchalik buyruqlari". Osborne CP / M foydalanuvchi qo'llanmasi - barcha CP / M foydalanuvchilari uchun (2 nashr). Berkli, Kaliforniya, AQSh: A. Osborne / McGraw-Hill. p. 74. ISBN  0-931988-82-9. Olingan 2020-02-28. […] CP / M ning oxirini belgilaydi ASCII joylashtirish orqali fayl NAZORAT-z oxirgi ma'lumotlar belgisidan keyin fayldagi belgi. Agar faylda 128 ta aniqlik ko'pligi bo'lsa, u holda CONTROL-Z qo'shilsa, 127 ta belgi bekor qilinadi, CP / M buni qilmaydi. CONTROL-Z belgisidan quyidagicha foydalanish fayl oxiridagi marker mumkin, chunki CONTROL-z kamdan-kam hollarda ASCII fayllaridagi ma'lumotlar sifatida ishlatiladi. ASCII bo'lmagan faylda esa CONTROL-Z boshqa har qanday belgi singari sodir bo'lishi mumkin. Shuning uchun uni fayl oxiridagi marker sifatida ishlatish mumkin emas. CP / M ASCII bo'lmagan faylning oxirini belgilash uchun boshqa usuldan foydalanadi. CP / M faylga ajratilgan so'nggi yozuvni (disk maydonining asosiy birligi) o'qiganida fayl oxiriga yetdi deb taxmin qiladi. Har bir fayl uchun disk katalogi yozuvida ushbu faylga ajratilgan disk yozuvlari ro'yxati mavjud. Ushbu usul faylning oxirini topish uchun uning tarkibiga emas, balki hajmiga bog'liq. […] [5][6]
  20. ^ BC_Programmer (2010-01-31) [2010-01-30]. "Re: bir nechta fayllarni birlashtirgan nusxa ko'chirish buyrug'i oxirida SUB so'zini belgilaydi". Kompyuter umidlari forumi. Arxivlandi asl nusxasidan 2020-02-26. Olingan 2020-02-26.
  21. ^ "Linux va Windows .txt fayllari o'rtasidagi farqlar (Unicode kodlash)". Superuser. 2011-08-03 [2011-06-08]. Arxivlandi asl nusxasidan 2020-02-26. Olingan 2020-02-26.
  22. ^ a b Gordon, Rayan S (Oktyabr 2009). "FatELF: Linux uchun universal ikkiliklar". icculus.org. Arxivlandi asl nusxasidan 2020-08-27. Olingan 2010-07-13.
  23. ^ Gordon, Rayan S (2009 yil noyabr). "FatELF spetsifikatsiyasi, 1-versiya". icculus.org. Arxivlandi asl nusxasidan 2020-08-27. Olingan 2010-07-25.
  24. ^ Vindis, Erik (2009-11-03). "Mavzu: Yangiliklar guruhlari: gmane.linux.kernel, Re: FatELF patches ..." gmane.org. Arxivlandi asl nusxasi 2016-11-15 kunlari. Olingan 2010-07-08.
  25. ^ "Ubuntu 9.04 ning VM-surati Fat Binary-ning yordami bilan".
  26. ^ Xolverda, Toms (2009-11-03). "Rayan Gordon FatELF loyihasini to'xtatmoqda". osnews.com. Olingan 2010-07-05.
  27. ^ Brokmeyer, Djo (2010-06-23). "O'ZI: muvaffaqiyatsizlikka uchragan anatomiya". Linux haftalik yangiliklari. Olingan 2011-02-06.
  28. ^ Mulder, Sijmen J. (2020-04-28). "sjmulder / fatpack". GitHub.
  29. ^ "LTO haqida umumiy ma'lumot (GNU kompilyatori to'plami (GCC) ichki qismlari)". gcc.gnu.org.
  30. ^ Wennborg VI, Hans (2018). "Clangdagi atributlar". Clang 7 hujjatlari.
  31. ^ "Intel arxitekturasi uchun optimallashtirilgan kutubxona to'plamlaridan shaffof foydalanish". Linux * loyihasini tozalash.

Tashqi havolalar