Jump to content

Бинарный рекомпилятор

(Перенаправлено из двоичной перекомпиляции )

Бинарный рекомпилятор — это компилятор , который принимает на вход исполняемые двоичные файлы , анализирует их структуру, применяет преобразования и оптимизации и выводит новые оптимизированные исполняемые двоичные файлы. [1]

Основы концепции двоичной перекомпиляции были заложены Гэри Килдаллом. [2] [3] [4] [5] [6] [7] [8] с разработкой оптимизирующего транслятора ассемблерного кода XLT86 в 1981 году. [4] [9] [10] [11]

См. также

[ редактировать ]
  1. ^ Мадж, Тревор; Рейнхардт, Стив; Тайсон, Гэри. «Двоичная перекомпиляция и комбинированные исследования по улучшению компилятора/архитектуры» . umich.edu . Мичиганский университет (UM). Архивировано из оригинала 23 июля 2012 г. Проверено 23 июля 2012 г.
  2. ^ Килдалл, Гэри Арлен (май 1972 г.). Глобальная оптимизация выражений во время компиляции (кандидатская диссертация). Сиэтл, Вашингтон, США: Вашингтонский университет , Группа компьютерных наук. Диссертация №20506, Технический отчет №72-06-02.
  3. ^ Килдалл, Гэри Арлен (1 октября 1973 г.). «Единый подход к глобальной оптимизации программ» (PDF) . Материалы 1-го ежегодного симпозиума ACM SIGACT-SIGPLAN по принципам языков программирования (POPL) . ПОПЛ '73. Бостон, Массачусетс, США: 194–206. дои : 10.1145/512927.512945 . hdl : 10945/42162 . S2CID   10219496 . Архивировано (PDF) из оригинала 29 июня 2017 г. Проверено 20 ноября 2006 г. ( [1] )
  4. ^ Jump up to: а б Фрайбергер, Пол (19 октября 1981 г.). «Переводчики программ делают это буквально, а иногда и в контексте» . InfoWorld - Новости для пользователей микрокомпьютеров . Специальный раздел: Совместимость с компьютером. Том. 3, нет. 22. Popular Computing, Inc. с. 19. ISSN   0199-6649 . Проверено 15 января 2020 г. […] «Если у вас нет схемы перевода, учитывающей особые особенности целевого микропроцессора, автоматический переводчик не сможет работать», — объясняет Дэниел Дэвис, программист из Digital Research . «В конечном итоге вы получите прямую транслитерацию ». […] Несмотря на все эти ограничения, в последнее время достигнут прогресс в развитии переводчиков. В частности, компания Digital Research представила свой транслятор ассемблерного кода с 8 на 16 бит. Согласно исследованию, проведенному президентом Digital Research Гэри Килдаллом , XLT86, по-видимому, предлагает преимущества по сравнению с ранее доступной технологией программного переводчика. Подобно Sorcim от Trans и Intel от Convert 86 , пакет Килдалла транслирует код на языке ассемблера из Микропроцессор 8080 на 8086 . Однако Килдалл применил метод анализа глобального потока , который учитывает некоторые основные недостатки других переводчиков. Процедура анализирует использование регистров и флагов в разделах кода 8080 с целью исключения несущественного кода . По словам программиста Digital Research Дэвиса, алгоритм, который использует Килдалл, позволяет переводчику учитывать контекст при переводе программы. До сих пор одной из основных проблем любой программы-переводчика была неспособность программы делать что-то большее, чем транслитерацию. Если новый переводчик Digital Research действительно продвинет технологию до такой степени, что можно будет учитывать контекст, то на рынке микрокомпьютеров может появиться больше программных переводчиков.
  5. ^ Уортон, Джон Харрисон (1 августа 1994 г.). «Гэри Килдалл, пионер индустрии, умер в 52 года: создал первые микрокомпьютерные языки, дисковые операционные системы» . Отчет микропроцессора . 8 (10). MicroDesign Resources Inc. (MDR). Архивировано из оригинала 18 ноября 2016 г. Проверено 18 ноября 2016 г.
  6. ^ «Награда SPA доктору Гэри А. Килдаллу: лауреат премии SPA 1995 года за выдающиеся достижения» . Ассоциация издателей программного обеспечения (SPA). 13 марта 1995 г. Архивировано из оригинала 21 декабря 2019 г. Получено 21 декабря 2019 г. - через www.digitalresearch.biz.
  7. ^ Суэйн, Майкл (1 апреля 1997 г.). «Гэри Килдалл и коллегиальное предпринимательство» . Журнал доктора Добба . Архивировано из оригинала 24 января 2007 г. Проверено 20 ноября 2006 г. В марте 1995 года Ассоциация издателей программного обеспечения посмертно наградила Гэри за его вклад в компьютерную индустрию. Они перечислили некоторые из его достижений: […] В 1980-х годах через DRI он представил двоичный перекомпилятор. […]
  8. ^ Хюитт, Роберт; Юбэнкс, Гордон ; Роландер, Томас «Том» Алан ; Лоус, Дэвид; Мишель, Ховард Э.; Халла, Брайан; Уортон, Джон Харрисон ; Берг, Брайан; Су, Вейлянь; Килдалл, Скотт ; Кампе, Билл (25 апреля 2014 г.). Лоус, Дэвид (ред.). «Наследие Гэри Килдалла: посвящение вехе CP / M IEEE» (PDF) (видеотранскрипция). Пасифик-Гроув, Калифорния, США: Музей истории компьютеров . Справочный номер CHM: X7170.2014 . Проверено 19 января 2020 г. […] Роландер : Ранее я упоминал, что Гэри любил подходить к решению проблем как архитектор. […] И он рисовал самые красивые изображения своих структур данных. […] И когда он закончил это […] и убедился, что эти структуры данных теперь верны, он впал в просто невероятный маниакальный режим кодирования. Он просто ходил по 20 часов в день […] в эти периоды времени его просто не было. Пару раз у него что-то запускалось с первого раза, это могло быть посреди ночи. И все вы, кто писал программы, видели, например, что, когда они впервые появляются на экране, вы должны кому-то об этом сказать. Моя жена Лори скажет вам, что мне пару раз звонили посреди ночи. Одним из примеров был LOGO , другим — XLT 86 , где он запустил его с первого раза, и ему нужно было, чтобы кто-нибудь это увидел. Так что не имело значения, сколько сейчас времени, он звонил мне, а мне приходилось приходить и смотреть, как все работает. […] [2] [3] (33 страницы)
  9. ^ Барри, Тим (5 апреля 1982 г.). «XLT-86, служебная программа CP/M от Digital Research» . InfoWorld — еженедельник новостей для пользователей микрокомпьютеров . Обзор программного обеспечения InfoWorld. Том. 4, нет. 13. Popular Computing, Inc., стр. 40–41, 53. ISSN   0199-6649 . Проверено 25 января 2020 г. […] XLT-86 — это аналитическая программа-переводчик, написанная на PL/I-80 . Он считывает всю 8080 исходную программу , ассемблирует ее в машинный код , анализирует использование регистров, памяти и флагов и создает оптимизированную 8086 программу на языке ассемблера . […] Трансляция программы происходит в пять этапов. Сначала программа сканируется и компилируется для получения значений и местоположений символов. Во-вторых, структура программы анализируется и разбивается на базовые блоки . В-третьих, базовые блоки анализируются для определения хода выполнения программы и использования ресурсов. Далее, структура блока и данные о распределении регистров собираются в список для пользователя. В-пятых, информация о потоке и исходная программа используются для создания исходной программы 8086. […]
  10. ^ Килдалл, Гэри Арлен (19 апреля 1982 г.). Суэйн, Майкл ; Фрайбергер, Пол ; Маркофф, Джон Грегори (ред.). «Основатель Digital Research обсуждает свой взгляд на бизнес» . InfoWorld — еженедельник новостей для пользователей микрокомпьютеров . Специальный раздел: CP/M. Том. 4, нет. 15. Popular Computing, Inc., стр. 23–24. ISSN   0199-6649 . Проверено 17 января 2020 г. […] Килдалл: […] Полтора года назад я, наверное, тратил 75% своего времени на бизнес и 25% на программирование. XLT-86 был продуктом, над которым я тогда работал, и на его создание у меня ушло девять месяцев. Этот проект занял бы три месяца, если бы я мог сосредоточиться на нем. […]
  11. ^ Килдалл, Гэри Арлен (июнь – июль 1982 г.). Баннелл, Дэвид Хью ; Эдлин, Джим (ред.). «Гэри Килдалл - человек, создавший CP/M: создатель CP/M - углубленное эксклюзивное для ПК интервью с пионером программного обеспечения Гэри Килдаллом» . Журнал ПК . Операционные системы. Том. 1, нет. 3. Software Communications, Inc., стр. 32–38, 40 . Проверено 17 января 2020 г. […] ПК: Каковы некоторые сложности, связанные с переводом программы из формы 8080 в 8086 форму ? Килдалл : Прямые переводы на уровне исходной программы можно сделать практически механически. Например, команда 8080 «Добавить немедленно 5» превращается в команду «Добавить AL 5» на 8086 — очень простой перевод самих кодов операций. Сложность механической трансляции возникает из-за таких ситуаций: инструкция 8080 DAD H берет регистр HL и добавляет к нему DE. Для 8086 эквивалентной инструкцией будет что-то вроде ADD DX BX, это нормально, никаких особых проблем. Вы просто говорите, что регистр DX такой же, как HL, а BX такой же, как DE. Проблема в том, что инструкция 8086 имеет побочный эффект установки нулевого флага, а инструкция 8080 — нет. При механическом переводе вы в конечном итоге делаете что-то вроде сохранения флагов, восстановления флагов, выполнения некоторых сдвигов и поворотов и так далее. Они добавляют около пяти или шести дополнительных инструкций для получения того же семантического эффекта. В коде 8080 имеется множество последовательностей, которые создают очень странные последовательности в коде 8086; они просто не очень хорошо отображаются из-за регистров флагов и тому подобного. То, как мы создаем программное обеспечение, называется ХЛТ-86 . Прошло уже полгода или около того. ПК: Под «лучшим» кодом вы имеете в виду меньший? Килдалл: На двадцать процентов меньше, чем если бы вы просто взяли каждый код операции и выполнили прямой перевод, сохраняя регистры для сохранения семантики. ПК: Насколько размер переведенной программы соотносится с размером версии 8080? Килдалл: Если вы возьмете программу 8080, переместите ее на землю 86 и выполните трансляцию XLT-86, вы обнаружите, что она примерно на 10–20 процентов больше. На 16-битных машинах сложнее решить все проблемы; вы получаете коды операций, которые в среднем немного больше. Интересный феномен заключается в том, что одна из причин, по которой вы не получаете огромного прироста скорости в 16-битном мире, заключается в том, что вы запускаете больше кодов операций по шине данных. […]

Дальнейшее чтение

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 676da70cd5371d77301029d093a19385__1718938020
URL1:https://arc.ask3.ru/arc/aa/67/85/676da70cd5371d77301029d093a19385.html
Заголовок, (Title) документа по адресу, URL1:
Binary recompiler - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)