Бинарный рекомпилятор
(Перенаправлено из двоичной перекомпиляции )
Бинарный рекомпилятор — это компилятор , который принимает на вход исполняемые двоичные файлы , анализирует их структуру, применяет преобразования и оптимизации и выводит новые оптимизированные исполняемые двоичные файлы. [1]
Основы концепции двоичной перекомпиляции были заложены Гэри Килдаллом. [2] [3] [4] [5] [6] [7] [8] с разработкой оптимизирующего транслятора ассемблерного кода XLT86 в 1981 году. [4] [9] [10] [11]
См. также
[ редактировать ]- Бинарный оптимизатор (преобразование двоичных файлов в двоичные файлы)
- Бинарный переводчик (двоичный в двоичный)
- Декомпилятор (двоичный код в исходный код)
- Дизассемблер (двоичный код в исходный код)
- Динамический перекомпилятор (двоичный в двоичный)
- Транскомпилятор (исходный код)
- Honeywell Liberator (запуск IBM 1401 программ на Honeywell H200 )
Ссылки
[ редактировать ]- ^ Мадж, Тревор; Рейнхардт, Стив; Тайсон, Гэри. «Двоичная перекомпиляция и комбинированные исследования по улучшению компилятора/архитектуры» . umich.edu . Мичиганский университет (UM). Архивировано из оригинала 23 июля 2012 г. Проверено 23 июля 2012 г.
- ^ Килдалл, Гэри Арлен (май 1972 г.). Глобальная оптимизация выражений во время компиляции (кандидатская диссертация). Сиэтл, Вашингтон, США: Вашингтонский университет , Группа компьютерных наук. Диссертация №20506, Технический отчет №72-06-02.
- ^ Килдалл, Гэри Арлен (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] )
- ^ 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 действительно продвинет технологию до такой степени, что можно будет учитывать контекст, то на рынке микрокомпьютеров может появиться больше программных переводчиков.
- ^ Уортон, Джон Харрисон (1 августа 1994 г.). «Гэри Килдалл, пионер индустрии, умер в 52 года: создал первые микрокомпьютерные языки, дисковые операционные системы» . Отчет микропроцессора . 8 (10). MicroDesign Resources Inc. (MDR). Архивировано из оригинала 18 ноября 2016 г. Проверено 18 ноября 2016 г.
- ^ «Награда SPA доктору Гэри А. Килдаллу: лауреат премии SPA 1995 года за выдающиеся достижения» . Ассоциация издателей программного обеспечения (SPA). 13 марта 1995 г. Архивировано из оригинала 21 декабря 2019 г. Получено 21 декабря 2019 г. - через www.digitalresearch.biz.
- ^ Суэйн, Майкл (1 апреля 1997 г.). «Гэри Килдалл и коллегиальное предпринимательство» . Журнал доктора Добба . Архивировано из оригинала 24 января 2007 г. Проверено 20 ноября 2006 г.
В марте 1995 года Ассоциация издателей программного обеспечения посмертно наградила Гэри за его вклад в компьютерную индустрию. Они перечислили некоторые из его достижений: […] В 1980-х годах через DRI он представил двоичный перекомпилятор. […]
- ^ Хюитт, Роберт; Юбэнкс, Гордон ; Роландер, Томас «Том» Алан ; Лоус, Дэвид; Мишель, Ховард Э.; Халла, Брайан; Уортон, Джон Харрисон ; Берг, Брайан; Су, Вейлянь; Килдалл, Скотт ; Кампе, Билл (25 апреля 2014 г.). Лоус, Дэвид (ред.). «Наследие Гэри Килдалла: посвящение вехе CP / M IEEE» (PDF) (видеотранскрипция). Пасифик-Гроув, Калифорния, США: Музей истории компьютеров . Справочный номер CHM: X7170.2014 . Проверено 19 января 2020 г.
[…] Роландер : Ранее я упоминал, что Гэри любил подходить к решению проблем как архитектор. […] И он рисовал самые красивые изображения своих структур данных. […] И когда он закончил это […] и убедился, что эти структуры данных теперь верны, он впал в просто невероятный маниакальный режим кодирования. Он просто ходил по 20 часов в день […] в эти периоды времени его просто не было. Пару раз у него что-то запускалось с первого раза, это могло быть посреди ночи. И все вы, кто писал программы, видели, например, что, когда они впервые появляются на экране, вы должны кому-то об этом сказать. Моя жена Лори скажет вам, что мне пару раз звонили посреди ночи. Одним из примеров был LOGO , другим — XLT 86 , где он запустил его с первого раза, и ему нужно было, чтобы кто-нибудь это увидел. Так что не имело значения, сколько сейчас времени, он звонил мне, а мне приходилось приходить и смотреть, как все работает. […]
[2] [3] (33 страницы) - ^ Барри, Тим (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. […]
- ^ Килдалл, Гэри Арлен (19 апреля 1982 г.). Суэйн, Майкл ; Фрайбергер, Пол ; Маркофф, Джон Грегори (ред.). «Основатель Digital Research обсуждает свой взгляд на бизнес» . InfoWorld — еженедельник новостей для пользователей микрокомпьютеров . Специальный раздел: CP/M. Том. 4, нет. 15. Popular Computing, Inc., стр. 23–24. ISSN 0199-6649 . Проверено 17 января 2020 г.
[…] Килдалл: […] Полтора года назад я, наверное, тратил 75% своего времени на бизнес и 25% на программирование. XLT-86 был продуктом, над которым я тогда работал, и на его создание у меня ушло девять месяцев. Этот проект занял бы три месяца, если бы я мог сосредоточиться на нем. […]
- ^ Килдалл, Гэри Арлен (июнь – июль 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-битном мире, заключается в том, что вы запускаете больше кодов операций по шине данных. […]
Дальнейшее чтение
[ редактировать ]- Венцль, Матиас; Мерздовник, Георг; Ульрих, Йоханна; Вейппль, Эдгар Р. (июнь 2019 г.) [февраль 2019 г., ноябрь 2018 г., май 2018 г.]. «От взлома к сложной технике — обзор бинарной перезаписи» (PDF) . Обзоры вычислительной техники ACM . 52 (3). Вена, Австрия: 49:1–49:36. дои : 10.1145/3316415 . S2CID 195357367 . Статья 49. Архивировано (PDF) из оригинала 15 января 2021 г. Проверено 28 ноября 2021 г. (36 страниц)