Екілік аударма - Binary translation

Жылы есептеу, екілік аударма формасы болып табылады екілік компиляция қайда нұсқаулық а-дан аударылған қайнар көзі нұсқаулар жинағы дейін мақсат нұсқаулар жинағы. Сияқты кейбір жағдайларда нұсқаулық жиынтығын модельдеу, мақсатты нұсқаулар жинағы бастапқы нұсқаулар жиынтығымен бірдей болуы мүмкін, командалық бақылау, шартты үзіліс нүктелері және тестілеу мен күйін келтіру мүмкіндіктерін ұсынады. ыстық нүкте анықтау.

Екі негізгі түрі - статикалық және динамикалық екілік аударма. Аударманы аппараттық құралдармен жасауға болады (мысалы, а. Тізбектерімен) Орталық Есептеуіш Бөлім ) немесе бағдарламалық жасақтамада (мысалы, жұмыс істейтін қозғалтқыштар, статикалық қайта құрастырғыш, эмуляторлар).

Мотивация

Екілік аударма мақсатты платформа үшін екілік файлдың жетіспеуінен, мақсатты платформа үшін жинақталатын бастапқы кодтың болмауынан немесе мақсатты платформа үшін дереккөзді құрастырудағы қиындықтардан туындайды.

Статикалық қайта жинақталған екілік файлдар олардың эмуляцияланған екілік файлдарына қарағанда тезірек жұмыс істейді, өйткені эмуляция үстеме ақысы жойылады. Бұл жалпы интерпретацияланған және құрастырылған бағдарламалардың арасындағы айырмашылыққа ұқсас.

Статикалық екілік аударма

Статикалық екілік аударманы қолданатын аудармашы an кодының барлығын түрлендіруге бағытталған орындалатын файл динамикалық екілік аудармада жасалғандай, мақсатты архитектурада алдымен кодты іске қоспай-ақ жұмыс істейтін кодқа. Мұны дұрыс жасау өте қиын, өйткені барлық кодтарды аудармашы таба алмайды. Мысалы, орындалатын бағдарламаның кейбір бөліктеріне тек қол жетімді болуы мүмкін жанама бұтақтар, оның мәні тек жұмыс уақытында белгілі.

Осындай статикалық екілік аудармашының бірі әмбебапты қолданады супер оптимизатор тесік технология (әзірлеген Сорав Бансал, және Алекс Айкен бастап Стэнфорд университеті ) көптеген шығыс шығындарымен және мақсатты екіліктің жоғары өнімділіктерімен мүмкін көптеген көздер мен мақсатты жұптар арасында тиімді аударма жасау. PowerPC-x86-ға аудару эксперименттерінде кейбір екілік файлдар тіпті жергілікті нұсқалардан асып түсті, бірақ орташа жылдамдықтың үштен екі бөлігімен жұмыс істеді.

Статикалық екілік аудармаға мысалдар

Хонивелл деп аталатын бағдарламаны ұсынды Босатушы олар үшін Honeywell 200 компьютерлер сериясы; ол бағдарламаларды аудара алады IBM 1400 сериясы Honeywell 200 сериясына арналған бағдарламаларға компьютерлер.[1]

2014 ж ARM архитектурасы 1998 жылғы нұсқасы Видео ойын StarCraft статикалық компиляция және қосымша жолмен жасалған кері инженерия түпнұсқа x86 нұсқасы.[2][3]The Пандора қолмен жұмыс істейтін қоғамдастық қажетті құралдарды дамыта алды[4] өз бетінше және бірнеше рет осындай аудармаларға қол жеткізу.[5][6]

Мысалы, сәтті x86-данx64 үшін статикалық компиляция жасалды рельефті генератор бейне ойын Cube World 2014 жылы.[7]

Тағы бір мысал NES -ке-x86 бейнеойынның статикалық қайта құрастырылған нұсқасы Super Mario Bros. пайдалану кезінде жасалған LLVM 2013 жылы.[8]

2004 жылы Скотт Эллиотт пен Филлип Р.Хатчинсон ат Нинтендо бастап «С» кодын жасау құралын әзірледі Ойын баласы содан кейін жаңа платформаға жинақталып, әуе компаниясының ойын-сауық жүйелерінде пайдалану үшін аппараттық кітапханамен байланыстыруға болатын екілік.[9]

1995 жылы Норман Рэмси сағ Bell байланыс зерттеулері және Мэри Ф. Фернандес, компьютерлік ғылымдар кафедрасында, Принстон университеті дамыған Нью-Джерсидегі машиналық кодтар туралы нұсқаулық статикалық аударманы аударудың негізгі құралдары болған.[10]

Динамикалық екілік аударма

Динамикалық екілік аударма (DBT) кодтың қысқа ретін қарастырады - әдетте синглдің реті бойынша негізгі блок - содан кейін оны аударады және алынған ретті сақтайды. Код анықталған кезде ғана аударылады және мүмкіндігінше аударылады және бұған дейін аударылған және сақталған кодты көрсету үшін тармақталған нұсқаулар жасалады (есте сақтау ).

Динамикалық екілік аударма қарапайым эмуляциядан ерекшеленеді (эмулятордың негізгі оқу-декодтау-орындау циклін жояды - негізгі жұмыс тарлығы), мұны аудару кезінде үлкен шығындармен төлейді. Аударылған код тізбегі бірнеше рет орындалғандықтан, бұл қосымша шығындар амортизацияланады.

Неғұрлым жетілдірілген динамикалық аудармашылар жұмыс істейді динамикалық компиляция мұнда аударылған код қандай бөліктердің көп орындалатындығын білуге ​​арналған, ал бұл бөліктер оңтайландырылған агрессивті. Бұл әдіс а-ны еске түсіреді JIT компиляторы, және шын мәнінде мұндай компиляторлар (мысалы. Күн Келіңіздер HotSpot технологиясын) виртуалды командалар жиынтығынан динамикалық аудармашылар ретінде қарастыруға болады ( байт коды ) нақтыға.

Бағдарламалық жасақтамада динамикалық екілік аудармаға мысалдар

  • Apple Computer динамикалық аударманы жүзеге асырды эмулятор үшін M68K олардағы код PowerPC сызығы Macintoshes,[11] ол сенімділіктің, өнімділіктің және үйлесімділіктің өте жоғары деңгейіне қол жеткізді (қараңыз) Mac 68K эмуляторы ). Бұл Apple-ге машиналарды тек ішінара жергілікті нарыққа шығаруға мүмкіндік берді операциялық жүйе және соңғы пайдаланушылар бағдарламалық жасақтамаға инвестиция салуға қауіп төндірмей жаңа, жылдам архитектураны қолдана алады. Ішінара эмулятор сәтті болғандықтан, амалдық жүйенің көптеген бөліктері эмуляцияланды. PowerPC түпнұсқасына толық көшу операциялық жүйе (OS) шығарылғанға дейін жасалмады Mac OS X (10.0) 2001 ж. (Mac OS X «Классикалық «жұмыс уақыты ортасы PowerPC Mac компьютерлерінде осы эмуляция мүмкіндігін ұсынуды жалғастырды Mac OS X 10.5.)
  • Mac OS X 10.4.4 Intel негізіндегі Mac-қа арналған Розетта Apple-дің PPC негізіндегі жабдықтан x86-ға көшуін жеңілдететін динамикалық аударма қабаты. Apple компаниясы әзірледі Өтпелі корпорация, Rosetta бағдарламалық жасақтамасы - бұл Transitive бағдарламасын іске асыру QuickTransit шешім.
  • Өнімнің қызмет ету мерзімі ішінде QuickTransit қамтамасыз етіледі СПАРКx86, x86 →PowerPC және MIPSИтан 2 аударманы қолдау.
  • ДЕК пайдаланушыларға көшуге көмектесетін аударма құралдарымен осындай жетістікке жетті CISC VAX сәулет Альфа RISC сәулет.[дәйексөз қажет ]
  • HP ARIES (автоматты түрде қайта аудару және интеграцияланған ортаны модельдеу) - бұл бағдарламалық жасақтама[12] мөлдір және дәл орындау үшін жылдам кодты түсіндіруді екі фазалық динамикалық аудармамен біріктіретін динамикалық екілік аударма жүйесі HP 9000 HP-UX қосымшалар қосулы HP-UX 11i үшін HPE тұтастығы серверлері.[13] ARIES жылдам аудармашысы артықшылықсыздардың толық жиынтығын имитациялайды PA-RISC пайдаланушының араласуынсыз нұсқаулар. Түсіндіру кезінде ол бағдарламаның орындалу үлгісін бақылайды және тек жиі орындалатын кодты жергілікті тілге аударады Итан жұмыс кезінде код. ARIES екі фазалық динамикалық аударманы жүзеге асырады, бұл әдіс бірінші фазада аударылған код, аударылған кодты әрі қарай оңтайландыру үшін екінші фаза аудармасы кезінде пайдаланылатын профиль ақпаратын жинайды. ARIES динамикалық түрде аударылған кодты жад буферінде кодты кэш деп атайды. Аударылған негізгі блоктарға сілтемелер тікелей код кэшінде орындалады және қосымша интерпретация мен аударманы қажет етпейді. Аударылған код блоктарының мақсаттары көбінесе кодтың кэшінде орындалуын қамтамасыз ету үшін артқы жағылады. Эмуляция аяқталғаннан кейін ARIES барлық аударылған кодтарды бастапқы қосымшаны өзгертпестен алып тастайды. ARIES эмуляторы қоршаған ортаны эмуляциялауды жүзеге асырады, ол ан HP 9000 HP-UX қосымшаның жүйелік қоңыраулары, сигнал беру, ерекшеліктерді басқару, ағындарды басқару, эмуляция HP GDB түзету үшін және қосымша үшін негізгі файл құру.
  • ОСК құрды FX! 32 түрлендіруге арналған екілік аудармашы x86 қосымшаларға Альфа қосымшаларына.[11]
  • Sun Microsystems ' Ваби бағдарламалық жасақтамаға x86-дан SPARC нұсқауларына дейінгі динамикалық аударма кірді.
  • 2000 жылдың қаңтарында Трансмета Корпорациясы жаңа процессордың дизайнын жариялады Крузо.[14][15] Бастап Жиі қойылатын сұрақтар[16] өз веб-сайтында,

    Ақылды микропроцессор аппараттық құралдан тұрады VLIW оның қозғалтқышы және Code Morphing бағдарламалық жасақтамасы деп аталатын бағдарламалық қабаты. Code Morphing бағдарламалық жасақтамасы қабықша […] морфинг немесе трансляция рөлін атқарады x86 жергілікті Крузо нұсқауларына нұсқаулар. Сонымен қатар, Code Morphing бағдарламалық жасақтамасында динамикалық компилятор мен код оптимизаторы бар […] Нәтижесінде қуаттылықтың ең аз мөлшерінде өнімділік жоғарылайды. […] [Бұл] Transmeta-ға VLIW аппараттық құралын және Code Morphing бағдарламалық жасақтамасын бағдарламалық жасақтаманың үлкен базасына әсер етпестен бөлек дамытуға мүмкіндік береді.

  • Intel Корпорация әзірледі және жүзеге асырды IA-32 орындау қабаты - IA-32 қосымшаларын қолдауға арналған динамикалық екілік аудармашы Итан енгізілген негізделген жүйелер Microsoft Windows Server үшін Итан сәулеті, сонымен қатар бірнеше хош иістен Linux, оның ішінде Қызыл қалпақ және Сусе. Бұл IA-32 қосымшаларына Itanium процессорларында жергілікті IA-32 режимін қолданғаннан гөрі жылдамырақ жұмыс істеуге мүмкіндік берді.
  • Дельфин (эмулятор GameCube /Wii ) PowerPC кодының x86 және AArch64 дейін JIT компиляциясын орындайды.

Жабдықта динамикалық екілік аудармаға мысалдар

  • бастап x86 Intel процессорлары Pentium Pro күрделі аудару CISC x86 нұсқаулары RISC - ішкі сияқты микро операциялар.
  • Nvidia Тегра K1 Денвер аударады ҚОЛ баяу аппараттық декодерге арналған нұсқаулар, өзінің жергілікті микрокод нұсқауларына және ыстық код үшін бағдарламалық екілік аудармашыны қолданады.[дәйексөз қажет ]

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ Honeywell сериясы 200 қысқаша сипаттамасы (PDF). Хонивелл. Ақпан 1966. б. 11. Мысалы, 200 сериялы процессорлардың нұсқау репертуары IBM 1400 сериясындағы бірнеше басқа өңдеу систмаларымен жеткілікті, осы бәсекеге қабілетті жүйелер үшін жазылған бағдарламаларды орындауға қолайлы формаға бір реттік аударуға мүмкіндік береді. жоғары сапалы 200 жүйелерінде.
  2. ^ Steinlechner, Peter (2014-03-10). «Starcraft für ARM-Handheld компиляциясы» (неміс тілінде). golem.de. Алынған 2014-03-25.
  3. ^ нотаз (2014-03-04). «StarCraft». repo.openpandora.org. Алынған 2014-03-26.
  4. ^ нотаз (2014-03-01). «ia32rtools /». GitHub. Алынған 2015-01-09.
  5. ^ нотаз (2014-03-04). «Starcraft». openpandora.org. Алынған 2014-03-29. «Дереккөз жоқ, порт жоқ» ережесі толығымен дұрыс емес, сіз статикалық компиляция арқылы портқа ұқсас (бірақ бірдей емес) нәрсе ала аласыз. Ұқсас нәрселер кейбір DOS ойындары үшін бірнеше рет M-HT жасалды. Сондай-ақ, ойын Android-қа ұқсас тәсілмен түрлендірілді.
  6. ^ M-HT. «Warcraft: Orcs & Humans». repo.openpandora.org.
  7. ^ Керлев, Матиас (2014-04-14). «Практикалық және портативті X86 компиляциясы». Алынған 2014-08-08. бірақ содан кейін түпнұсқа x86 машиналық кодын пайдалану идеясы өзін ұсынды. Алайда, біздің ашық серверіміз үшін x86-64-ті қолдау қажет, және бұл жағдайда эмуляция немесе компиляция қажет. […] Ассемблерге статикалық түрде компиляция жасау әлдеқайда жақсы нұсқа болып көрінді, бірақ оны портативті етіп сақтау үшін x86, x86-64 және, мүмкін, ARM / PowerPC үшін резервтік жазбалар жазу керек.
  8. ^ Келли, Эндрю (2013-07-07). «NES ойындарын LLVM және Go бар жергілікті орындалатын файлдарға статикалық қайта құру». Алынған 2013-08-08. Бұл мақалада Nintendo Entertainment System ойындарын жергілікті орындалатын файлдарға статикалық түрде бөлшектеу және қайта жинау мүмкіндігі туралы түпнұсқа зерттеулер ұсынылған.
  9. ^ АҚШ 7765539, Эллиотт, Скотт және Филлип Хатчинсон, «Бейнежазбаларды трансляциялау жүйесі мен әдісі», 2010 ж. 
  10. ^ Рэмси, Норман; Фернандес, Мэри Ф. (1995). «Нью-Джерсидегі машиналық кодтар құралы». TCON'95 1995 ж. USENIX Техникалық конференциясының материалдары. USENIX қауымдастығы Беркли, Калифорния, АҚШ: 24.
  11. ^ а б Уартон, Джон Харрисон (1994-08-01). «Гари Килдалл, саланың ізашары, 52 жасында қайтыс болды: алғашқы микрокомпьютер тілдерін, дискілік операциялық жүйелерді жасады». Микропроцессорлық есеп. MicroDesign Resources Inc. (MDR). 8 (10). Мұрағатталды түпнұсқадан 2016-11-18. Алынған 2016-11-18. […] Бір қызығы, көптеген әдістер Гари ізашарлар қазір он жылдан кейін қайта табылуда. алма және ДЕК айтып жатыр екілік компиляция қолданыстағы бағдарламалық жасақтаманы «жаңа» технология ретінде PowerPC немесе Альфа сәулет. Шындығында, DRI енгізді 8080 -ке-8086 1980 жылдардың басында екілік қайта құрастырушы. […]
  12. ^ Карлсон, Джим; Хек, Джерри (2003). Итаны көтеру: Мурның есептеу күшінің екінші заңын бұзу. Prentice Hall PTR. ISBN  978-0-13046415-6. Алынған 2015-01-09.
  13. ^ «HP ARIES динамикалық екілік аудармашы». HP. Алынған 2015-01-09.
  14. ^ Стокс, Джон. «Трансмета Крузо зерттелді». Ars Technica. Алынған 2015-01-09.
  15. ^ Хьюз, Роб (2000-01-20). «Transmeta's Crusoe микропроцессоры». geek.com. Архивтелген түпнұсқа 2007-09-27.
  16. ^ «Transmeta Crusoe процессорына жиі қойылатын сұрақтар». Трансмета. 2007. мұрағатталған түпнұсқа 2007-01-10.

Әрі қарай оқу