У комп'ютерних науках, бінарний переклад — це форма бінарної перекомпіляції, при якій послідовності операторів перекладаються з вихідного набору інструкцій на цільовий набір інструкцій. У деяких випадках, наприклад, при симуляції набору команд, цільовий набір команд може бути таким самим, як вихідний, забезпечуючи функції тестування та налагодження, такі як трасування команд, умовні точки зупинки та виявлення гарячих точок.
Два основних типи цього процесу — це статичний та динамічний бінарний переклади. Переклад може бути виконаний в апаратному забезпеченні (наприклад, за допомогою схем в ЦП) або в програмному забезпеченні (наприклад, за допомогою двигунів виконання, або емуляторів).
Використання
Бінарний переклад використовується у випадках, коли відсутня бінарна версія для цільової платформи, немає вихідного коду для компіляції для цільової платформи, або інші труднощі щодо компіляції початкового коду для цільової платформи.
Статично перекомпільовані бінарні файли потенційно працюють швидше, ніж відповідні емульовані бінарні файли, оскільки відсутні накладні витрати на емуляцію. Це схоже на відмінність у продуктивності між інтерпретованими та скомпільованими програмами загалом.
Статичний бінарний переклад
Перекладач, який використовує статичний бінарний переклад, має на меті конвертувати весь код виконуваного файлу у код, який працює на цільовій архітектурі, не запускаючи код спочатку, як це робиться в динамічному бінарному перекладі. Це дуже складно зробити правильно, оскільки не весь код може бути виявлений перекладачем. Наприклад, деякі частини виконуваного файлу можуть бути доступні лише через непрямі переходи, значення яких відомі тільки під час виконання.
Один з таких статичних бінарних перекладачів використовує універсальну технологію peephole-супероптимізатора (розроблену та зі Стенфордського університету), щоб виконувати ефективний переклад між можливо багатьма початковими та цільовими парами зі значно низькими витратами на розробку та високою продуктивністю цільового бінарного файлу. У експериментах із перекладом з PowerPC на x86, деякі бінарні файли навіть перевершили відповідні нативні версії, але в середньому вони працювали зі швидкістю двох третин від нативної швидкості.
Приклади статичного бінарного перекладу
Honeywell створив програму під назвою Liberator для їх комп'ютерів серії Honeywell 200, яка могла перекладати програми для комп'ютерів серії IBM 1400 у програми для серії Honeywell 200.
У 2014 році була згенерована версія відеогри StarCraft 1998 року під архітектуру ARM за допомогою статичної перекомпіляції та додаткової зворотного проєктування оригінальної версії x86. Спільнота портативної консолі Pandora була здатна самостійно розробити необхідні інструменти та успішно виконати такі переклади кілька разів.
Наприклад, у 2014 році було згенеровано успішну статичну перекомпіляцію x86 до x64 для процедурного генератора ландшафту відеогри Cube World.
Іншим прикладом є статично перекомпільована версія відеогри Super Mario Bros. з NES до x86, яка була згенерована з використанням LLVM у 2013 році.
У 2004 році та у Nintendo розробили інструмент для генерації коду "C" з бінарного коду Game Boy, який потім можна скомпілювати для нової платформи та зв'язати з бібліотекою апаратного забезпечення для використання в системах авіакомпаній.
У 1995 році в Bell Communications Research та з кафедри комп'ютерних наук у Принстонському університеті розробили The New Jersey Machine-Code Toolkit, який мав базові інструменти для статичного перекладу збірки.
Динамічний бінарний переклад
Динамічний бінарний переклад (ДБП) дивиться на коротку послідовність коду, зазвичай на порядок одного базового блоку, перекладає його та кешує отриману послідовність. Код перекладається лише під час його виявлення, коли це можливо, і команди переходу спрямовуються на вже перекладений та збережений код (мемоізація).
Динамічний бінарний переклад відрізняється від простого емулювання (елімінуючи головний цикл зчитування-декодування-виконання емулятора, що є основною проблемою продуктивності), замінюючи його великими накладними витратами під час перекладу. Ці накладні витрати, сподіваються, будуть амортизовані в процесі багаторазового виконання перекладених послідовностей коду.
Більш розширені динамічні перекладачі використовують динамічну рекомпіляцію, де перекладений код інструментується для визначення того, які його частини виконуються багато разів, і ці частини оптимізуються агресивно. Ця техніка нагадує компілятор Just-in-time (JIT), і насправді такі компілятори (наприклад, технологія Sun's HotSpot) можуть розглядатись як динамічні перекладачі віртуального набору інструкцій (байт-коду) до реального набору.
Приклади використання динамічного бінарного перекладу в програмному забезпеченні
- Компанія Apple реалізувала динамічний емулятор перекладу для M68K-коду на своїх PowerPC-комп'ютерах Macintosh, який досяг дуже високого рівня надійності, продуктивності та сумісності. Це дозволило Apple випустити машини на ринок з частково нативною операційною системою, і кінцеві користувачі могли перейти на нову, швидшу умову, не ризикуючи своїми інвестиціями в програмне забезпечення. Частково через те, що емулятор був настільки успішним, багато частин операційної системи залишались емульованими. Повний перехід до нативної операційної системи PowerPC був здійснений лише з випуском Mac OS X (10.0) у 2001 році. (Середовище роботи "Classic" Mac OS X продовжувало надавати цю можливість емуляції на PowerPC Mac до Mac OS X 10.5.)
- Mac OS X 10.4.4 для Mac-комп'ютерів на базі процесорів Intel впровадила динамічний перекладацький шар Rosetta, щоб спростити перехід Apple від обладнання на базі PPC до x86. Розроблена для Apple компанією , програмне забезпечення Rosetta є реалізацією рішення QuickTransit від Transitive.
- QuickTransit протягом свого життєвого циклу також надавала підтримку перекладу SPARC→x86, x86→PowerPC та MIPS→Itanium 2.
- DEC досягла подібного успіху зі своїми інструментами перекладу, щоб допомогти користувачам мігрувати з архітектури CISC VAX на архітектуру RISC Alpha.
- HP ARIES (Automatic Re-translation and Integrated Environment Simulation) є системою динамічного бінарного перекладу програмного забезпечення, яка поєднує швидке інтерпретування коду з двофазовим динамічним перекладом для безшовного та точного виконання додатків HP-UX 9000 на серверах HP-UX 11i для HPE Integrity. Швидкий інтерпретатор ARIES емулює повний набір інструкцій PA-RISC без привілеїв без втручання користувача. Під час інтерпретації він моніторить патерн виконання додатка та перекладає на власний код Itanium тільки той код, який виконується часто. ARIES використовує двофазовий динамічний переклад, техніку, за допомогою якої перекладений код в першій фазі збирає інформацію про профіль виконання, яка використовується під час другої фази перекладу для додаткової оптимізації перекладеного коду. ARIES зберігає динамічно перекладений код у буфері пам'яті, названому кешем коду. Подальші посилання на перекладені блоки базового рівня виконуються безпосередньо у кеші коду та не потребують додаткової інтерпретації чи перекладу. Цілі перекладених блоків коду повертаються до кешу коду, щоб забезпечити виконання коду в кеші більшу частину часу. Після емуляції ARIES видаляє весь перекладений код без змінення оригінального додатка. Двигун емуляції ARIES також реалізує емуляцію середовища, яка емулює системні виклики, доставлення сигналів, управління винятками, управління потоками, емуляцію HP GDB для налагодження та створення файлів ядра для додатка.
- DEC створила бінарний перекладач FX!32 для конвертування додатків x86 в додатки для Alpha.
- Wabi від Sun Microsystems включала динамічний переклад від x86 до SPARC інструкцій.
- У січні 2000 року компанія Transmeta Corporation оголосила про новий дизайн процесора під назвою Crusoe. З FAQ (Часто задавані питання) на їх вебсайті,
Розумний мікропроцесор складається з апаратного ядра VLIW в як двигуна та програмного рівня під назвою програмне забезпечення Code Morphing. Програмне забезпечення Code Morphing діє як оболонка [...], перетворюючи або перекладаючи x86 інструкції на власні інструкції Crusoe. Крім того, програмне забезпечення Code Morphing містить динамічний компілятор та оптимізатор коду [...]. Результатом є збільшення продуктивності при мінімальному споживанні енергії. [...] Це дозволяє Transmeta розвивати апаратне ядро VLIW та програмне забезпечення Code Morphing окремо, не впливаючи на велику кількість програмних застосунків.
- Корпорація Intel розробила та впровадила Шару виконання IA-32 — динамічний бінарний транслятор, створений для підтримки додатків IA-32 на системах, що базуються на Itanium, включений у Microsoft Windows Server для архітектури Itanium, а також у деякі версії Linux, включаючи Red Hat та Suse. Він дозволяв додаткам IA-32 працювати швидше, ніж вони працювали б в нативному режимі IA-32 на процесорах Itanium.
- Dolphin (емулятор для консолей GameCube/Wii) виконує JIT рекомпіляцію коду PowerPC до x86 та AArch64.
Приклади динамічної бінарної трансляції в апаратурі
- Процесори x86 від Intel, починаючи з Pentium Pro, транслюють складні інструкції CISC x86 на більш RISC-подібні внутрішні мікрооперації.
- Nvidia Tegra K1 Denver транслює інструкції ARM за допомогою повільного апаратного декодера на його власні мікрокодові інструкції та використовує програмний бінарний транслятор для гарячого коду.
Див. також
Примітки
- Wikiwand - Апаратне забезпечення. Wikiwand. Процитовано 15 квітня 2023.
- Step by step: Програмне забезпечення. step.org.ua. Процитовано 15 квітня 2023.
- Компіляція. ВУЕ (укр.). Процитовано 15 квітня 2023.
- Python. Бінарні файли. Приклади роботи з бінарними файлами | BestProg. www.bestprog.net. Процитовано 15 квітня 2023.
- Статичне та динамічне лінкування: У чому різниця?. www.ranktracker.com (укр.). 4 квітня 2023. Процитовано 15 квітня 2023.
- Mammedov, Dadaş (16 серпня 2021). Мемоізація. www.wiki-data.uk-ua.nina.az (укр.). Процитовано 15 квітня 2023.
- Компілятор – UA5.org (укр.). Процитовано 15 квітня 2023.
- Mammedov, Dadaş. Rosetta. www.wiki-data.uk-ua.nina.az (укр.). Процитовано 15 квітня 2023.
- Intel Pentium Pro. www.elektronik-kompendium.de (de-DE) . Процитовано 15 квітня 2023.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U komp yuternih naukah binarnij pereklad ce forma binarnoyi perekompilyaciyi pri yakij poslidovnosti operatoriv perekladayutsya z vihidnogo naboru instrukcij na cilovij nabir instrukcij U deyakih vipadkah napriklad pri simulyaciyi naboru komand cilovij nabir komand mozhe buti takim samim yak vihidnij zabezpechuyuchi funkciyi testuvannya ta nalagodzhennya taki yak trasuvannya komand umovni tochki zupinki ta viyavlennya garyachih tochok Dva osnovnih tipi cogo procesu ce statichnij ta dinamichnij binarnij perekladi Pereklad mozhe buti vikonanij v aparatnomu zabezpechenni napriklad za dopomogoyu shem v CP abo v programnomu zabezpechenni napriklad za dopomogoyu dviguniv vikonannya abo emulyatoriv VikoristannyaBinarnij pereklad vikoristovuyetsya u vipadkah koli vidsutnya binarna versiya dlya cilovoyi platformi nemaye vihidnogo kodu dlya kompilyaciyi dlya cilovoyi platformi abo inshi trudnoshi shodo kompilyaciyi pochatkovogo kodu dlya cilovoyi platformi Statichno perekompilovani binarni fajli potencijno pracyuyut shvidshe nizh vidpovidni emulovani binarni fajli oskilki vidsutni nakladni vitrati na emulyaciyu Ce shozhe na vidminnist u produktivnosti mizh interpretovanimi ta skompilovanimi programami zagalom Statichnij binarnij perekladPerekladach yakij vikoristovuye statichnij binarnij pereklad maye na meti konvertuvati ves kod vikonuvanogo fajlu u kod yakij pracyuye na cilovij arhitekturi ne zapuskayuchi kod spochatku yak ce robitsya v dinamichnomu binarnomu perekladi Ce duzhe skladno zrobiti pravilno oskilki ne ves kod mozhe buti viyavlenij perekladachem Napriklad deyaki chastini vikonuvanogo fajlu mozhut buti dostupni lishe cherez nepryami perehodi znachennya yakih vidomi tilki pid chas vikonannya Odin z takih statichnih binarnih perekladachiv vikoristovuye universalnu tehnologiyu peephole superoptimizatora rozroblenu ta zi Stenfordskogo universitetu shob vikonuvati efektivnij pereklad mizh mozhlivo bagatma pochatkovimi ta cilovimi parami zi znachno nizkimi vitratami na rozrobku ta visokoyu produktivnistyu cilovogo binarnogo fajlu U eksperimentah iz perekladom z PowerPC na x86 deyaki binarni fajli navit perevershili vidpovidni nativni versiyi ale v serednomu voni pracyuvali zi shvidkistyu dvoh tretin vid nativnoyi shvidkosti Prikladi statichnogo binarnogo perekladu Honeywell stvoriv programu pid nazvoyu Liberator dlya yih komp yuteriv seriyi Honeywell 200 yaka mogla perekladati programi dlya komp yuteriv seriyi IBM 1400 u programi dlya seriyi Honeywell 200 U 2014 roci bula zgenerovana versiya videogri StarCraft 1998 roku pid arhitekturu ARM za dopomogoyu statichnoyi perekompilyaciyi ta dodatkovoyi zvorotnogo proyektuvannya originalnoyi versiyi x86 Spilnota portativnoyi konsoli Pandora bula zdatna samostijno rozrobiti neobhidni instrumenti ta uspishno vikonati taki perekladi kilka raziv Napriklad u 2014 roci bulo zgenerovano uspishnu statichnu perekompilyaciyu x86 do x64 dlya procedurnogo generatora landshaftu videogri Cube World Inshim prikladom ye statichno perekompilovana versiya videogri Super Mario Bros z NES do x86 yaka bula zgenerovana z vikoristannyam LLVM u 2013 roci U 2004 roci ta u Nintendo rozrobili instrument dlya generaciyi kodu C z binarnogo kodu Game Boy yakij potim mozhna skompilyuvati dlya novoyi platformi ta zv yazati z bibliotekoyu aparatnogo zabezpechennya dlya vikoristannya v sistemah aviakompanij U 1995 roci v Bell Communications Research ta z kafedri komp yuternih nauk u Prinstonskomu universiteti rozrobili The New Jersey Machine Code Toolkit yakij mav bazovi instrumenti dlya statichnogo perekladu zbirki Dinamichnij binarnij perekladDinamichnij binarnij pereklad DBP divitsya na korotku poslidovnist kodu zazvichaj na poryadok odnogo bazovogo bloku perekladaye jogo ta keshuye otrimanu poslidovnist Kod perekladayetsya lishe pid chas jogo viyavlennya koli ce mozhlivo i komandi perehodu spryamovuyutsya na vzhe perekladenij ta zberezhenij kod memoizaciya Dinamichnij binarnij pereklad vidriznyayetsya vid prostogo emulyuvannya eliminuyuchi golovnij cikl zchituvannya dekoduvannya vikonannya emulyatora sho ye osnovnoyu problemoyu produktivnosti zaminyuyuchi jogo velikimi nakladnimi vitratami pid chas perekladu Ci nakladni vitrati spodivayutsya budut amortizovani v procesi bagatorazovogo vikonannya perekladenih poslidovnostej kodu Bilsh rozshireni dinamichni perekladachi vikoristovuyut dinamichnu rekompilyaciyu de perekladenij kod instrumentuyetsya dlya viznachennya togo yaki jogo chastini vikonuyutsya bagato raziv i ci chastini optimizuyutsya agresivno Cya tehnika nagaduye kompilyator Just in time JIT i naspravdi taki kompilyatori napriklad tehnologiya Sun s HotSpot mozhut rozglyadatis yak dinamichni perekladachi virtualnogo naboru instrukcij bajt kodu do realnogo naboru Prikladi vikoristannya dinamichnogo binarnogo perekladu v programnomu zabezpechenni Kompaniya Apple realizuvala dinamichnij emulyator perekladu dlya M68K kodu na svoyih PowerPC komp yuterah Macintosh yakij dosyag duzhe visokogo rivnya nadijnosti produktivnosti ta sumisnosti Ce dozvolilo Apple vipustiti mashini na rinok z chastkovo nativnoyu operacijnoyu sistemoyu i kincevi koristuvachi mogli perejti na novu shvidshu umovu ne rizikuyuchi svoyimi investiciyami v programne zabezpechennya Chastkovo cherez te sho emulyator buv nastilki uspishnim bagato chastin operacijnoyi sistemi zalishalis emulovanimi Povnij perehid do nativnoyi operacijnoyi sistemi PowerPC buv zdijsnenij lishe z vipuskom Mac OS X 10 0 u 2001 roci Seredovishe roboti Classic Mac OS X prodovzhuvalo nadavati cyu mozhlivist emulyaciyi na PowerPC Mac do Mac OS X 10 5 Mac OS X 10 4 4 dlya Mac komp yuteriv na bazi procesoriv Intel vprovadila dinamichnij perekladackij shar Rosetta shob sprostiti perehid Apple vid obladnannya na bazi PPC do x86 Rozroblena dlya Apple kompaniyeyu programne zabezpechennya Rosetta ye realizaciyeyu rishennya QuickTransit vid Transitive QuickTransit protyagom svogo zhittyevogo ciklu takozh nadavala pidtrimku perekladu SPARC x86 x86 PowerPC ta MIPS Itanium 2 DEC dosyagla podibnogo uspihu zi svoyimi instrumentami perekladu shob dopomogti koristuvacham migruvati z arhitekturi CISC VAX na arhitekturu RISC Alpha HP ARIES Automatic Re translation and Integrated Environment Simulation ye sistemoyu dinamichnogo binarnogo perekladu programnogo zabezpechennya yaka poyednuye shvidke interpretuvannya kodu z dvofazovim dinamichnim perekladom dlya bezshovnogo ta tochnogo vikonannya dodatkiv HP UX 9000 na serverah HP UX 11i dlya HPE Integrity Shvidkij interpretator ARIES emulyuye povnij nabir instrukcij PA RISC bez privileyiv bez vtruchannya koristuvacha Pid chas interpretaciyi vin monitorit patern vikonannya dodatka ta perekladaye na vlasnij kod Itanium tilki toj kod yakij vikonuyetsya chasto ARIES vikoristovuye dvofazovij dinamichnij pereklad tehniku za dopomogoyu yakoyi perekladenij kod v pershij fazi zbiraye informaciyu pro profil vikonannya yaka vikoristovuyetsya pid chas drugoyi fazi perekladu dlya dodatkovoyi optimizaciyi perekladenogo kodu ARIES zberigaye dinamichno perekladenij kod u buferi pam yati nazvanomu keshem kodu Podalshi posilannya na perekladeni bloki bazovogo rivnya vikonuyutsya bezposeredno u keshi kodu ta ne potrebuyut dodatkovoyi interpretaciyi chi perekladu Cili perekladenih blokiv kodu povertayutsya do keshu kodu shob zabezpechiti vikonannya kodu v keshi bilshu chastinu chasu Pislya emulyaciyi ARIES vidalyaye ves perekladenij kod bez zminennya originalnogo dodatka Dvigun emulyaciyi ARIES takozh realizuye emulyaciyu seredovisha yaka emulyuye sistemni vikliki dostavlennya signaliv upravlinnya vinyatkami upravlinnya potokami emulyaciyu HP GDB dlya nalagodzhennya ta stvorennya fajliv yadra dlya dodatka DEC stvorila binarnij perekladach FX 32 dlya konvertuvannya dodatkiv x86 v dodatki dlya Alpha Wabi vid Sun Microsystems vklyuchala dinamichnij pereklad vid x86 do SPARC instrukcij U sichni 2000 roku kompaniya Transmeta Corporation ogolosila pro novij dizajn procesora pid nazvoyu Crusoe Z FAQ Chasto zadavani pitannya na yih vebsajti Rozumnij mikroprocesor skladayetsya z aparatnogo yadra VLIW v yak dviguna ta programnogo rivnya pid nazvoyu programne zabezpechennya Code Morphing Programne zabezpechennya Code Morphing diye yak obolonka peretvoryuyuchi abo perekladayuchi x86 instrukciyi na vlasni instrukciyi Crusoe Krim togo programne zabezpechennya Code Morphing mistit dinamichnij kompilyator ta optimizator kodu Rezultatom ye zbilshennya produktivnosti pri minimalnomu spozhivanni energiyi Ce dozvolyaye Transmeta rozvivati aparatne yadro VLIW ta programne zabezpechennya Code Morphing okremo ne vplivayuchi na veliku kilkist programnih zastosunkiv Korporaciya Intel rozrobila ta vprovadila Sharu vikonannya IA 32 dinamichnij binarnij translyator stvorenij dlya pidtrimki dodatkiv IA 32 na sistemah sho bazuyutsya na Itanium vklyuchenij u Microsoft Windows Server dlya arhitekturi Itanium a takozh u deyaki versiyi Linux vklyuchayuchi Red Hat ta Suse Vin dozvolyav dodatkam IA 32 pracyuvati shvidshe nizh voni pracyuvali b v nativnomu rezhimi IA 32 na procesorah Itanium Dolphin emulyator dlya konsolej GameCube Wii vikonuye JIT rekompilyaciyu kodu PowerPC do x86 ta AArch64 Prikladi dinamichnoyi binarnoyi translyaciyi v aparaturi Procesori x86 vid Intel pochinayuchi z Pentium Pro translyuyut skladni instrukciyi CISC x86 na bilsh RISC podibni vnutrishni mikrooperaciyi Nvidia Tegra K1 Denver translyuye instrukciyi ARM za dopomogoyu povilnogo aparatnogo dekodera na jogo vlasni mikrokodovi instrukciyi ta vikoristovuye programnij binarnij translyator dlya garyachogo kodu Div takozhSimulyator naboru komand Emulyator Virtualna mashinaPrimitkiWikiwand Aparatne zabezpechennya Wikiwand Procitovano 15 kvitnya 2023 Step by step Programne zabezpechennya step org ua Procitovano 15 kvitnya 2023 Kompilyaciya VUE ukr Procitovano 15 kvitnya 2023 Python Binarni fajli Prikladi roboti z binarnimi fajlami BestProg www bestprog net Procitovano 15 kvitnya 2023 Statichne ta dinamichne linkuvannya U chomu riznicya www ranktracker com ukr 4 kvitnya 2023 Procitovano 15 kvitnya 2023 Mammedov Dadas 16 serpnya 2021 Memoizaciya www wiki data uk ua nina az ukr Procitovano 15 kvitnya 2023 Kompilyator UA5 org ukr Procitovano 15 kvitnya 2023 Mammedov Dadas Rosetta www wiki data uk ua nina az ukr Procitovano 15 kvitnya 2023 Intel Pentium Pro www elektronik kompendium de de DE Procitovano 15 kvitnya 2023