Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

См. Также [ править ]

Ссылки [ править ]

  1. ^ Мадж, Тревор; Рейнхардт, Стив; Тайсон, Гэри. «Двоичная рекомпиляция и комбинированные исследования улучшений компилятора / архитектуры» . umich.edu . Мичиганский университет (UM). Архивировано из оригинала на 2012-07-23 . Проверено 23 июля 2012 .
  2. ^ Kildall, Гэри Арлен (май 1972). Оптимизация глобального выражения при компиляции (кандидатская диссертация). Сиэтл, Вашингтон, США: Вашингтонский университет , группа компьютерных наук. Тезис № 20506, Технический отчет № 72-06-02.
  3. ^ Килдалл, Гэри Арлен (1973-10-01). «Единый подход к глобальной оптимизации программ» (PDF) . Материалы 1-го ежегодного симпозиума ACM SIGACT-SIGPLAN по принципам языков программирования (POPL) . POPL '73. Бостон, Массачусетс, США: 194–206. DOI : 10.1145 / 512927.512945 . ЛВП : 10945/42162 . S2CID 10219496 . Архивировано (PDF) из оригинала 29.06.2017 . Проверено 20 ноября 2006 .   ( [1] )
  4. ^ a b Фрайбергер, Пол (1981-10-19). «Переводчики программ делают это буквально - а иногда и в контексте» . InfoWorld - Новости для пользователей микрокомпьютеров . Специальный раздел: Совместимость компьютеров. 3 (22). Popular Computing, Inc. стр. 19. ISSN 0199-6649 . Проверено 15 января 2020 . […] «Если у вас нет схемы перевода, которая учитывает специфические особенности целевого микропроцессора, автоматический переводчик не сможет работать», - объясняет Дэниел Дэвис, программист из Digital Research . "Вы получите прямую транслитерацию . "[…] Несмотря на все эти ограничения, в последнее время был достигнут прогресс в разработке трансляторов. В частности, Digital Research представила свой восьми- и 16-битный транслятор ассемблерного кода. Основываясь на исследовании, проведенном президентом Digital Research Гэри Kildall , то XLT86 , как представляется , имеет преимущество над ранее доступными технологиями программного обеспечения переводчика. Как Sorcim «s Trans и Intel » s Преобразовать 86 , пакет Kildall переводится сборочно-код языка от 8080 микропроцессора к 8086 . Однако, Kildall применил глобальный поток анализметодика, учитывающая некоторые из основных недостатков других переводчиков. Процедура анализирует использование регистров и флагов в разделах кода 8080, чтобы исключить несущественный код . По словам программиста Digital Research Дэвиса, алгоритм, который использует Килдалл, позволяет переводчику учитывать контекст при переводе программы. До сих пор одной из основных проблем любой программы-переводчика была неспособность программного обеспечения делать гораздо больше, чем транслитерация. Если новый переводчик Digital Research действительно продвинет технологию до точки, позволяющей учитывать контекст, то на рынке микрокомпьютеров может появиться больше переводчиков программного обеспечения.
  5. ^ Wharton, Джон Харрисон (1994-08-01). «Гэри Килдалл, пионер отрасли, умер в 52 года: создал первые языки для микрокомпьютеров, дисковые операционные системы» . Отчет микропроцессора . MicroDesign Resources Inc. (MDR). 8 (10). Архивировано 18 ноября 2016 года . Проверено 18 ноября 2016 .
  6. ^ "Премия СПА доктору Гэри А. Килдаллу: Победитель Премии за заслуги перед СПА в 1995 году" . Ассоциация издателей программного обеспечения (SPA). 1995-03-13. Архивировано 21 декабря 2019 года . Проверено 21 декабря 2019 г. - через www.digitalresearch.biz.
  7. ^ Суэйн, Майкл (1997-04-01). «Гэри Килдалл и коллегиальное предпринимательство» . Журнал доктора Добба . Архивировано из оригинала на 2007-01-24 . Проверено 20 ноября 2006 . В марте 1995 года Ассоциация издателей программного обеспечения посмертно наградила Гэри за его вклад в компьютерную индустрию. Они перечислили некоторые из его достижений: […] В 1980-х через DRI он представил двоичный рекомпилятор. […]
  8. ^ Хайтт, Роберт; Юбэнкс, Гордон ; Роландер, Томас «Том» Алан ; Законы, Дэвид; Michel, Howard E .; Халла, Брайан; Уортон, Джон Харрисон ; Берг, Брайан; Су, Вейлиан; Килдалл, Скотт ; Кампе, Билл (25 апреля 2014 г.). Законы, Дэвид (ред.). «Наследие Гэри Килдалла: посвящение CP / M IEEE» (PDF) (транскрипция видео). Пасифик Гроув, Калифорния, США: Музей истории компьютеров . Номер ссылки CHM: X7170.2014 . Проверено 19 января 2020 . […] Роландер : Я уже упоминал, что Гэри любил подходить к проблеме как архитектор. […] И он рисовал самые красивые изображения своих структур данных. […] И когда он закончил это […] и убедился, что эти структуры данных теперь верны, он войдет в просто невероятный маниакальный режим кодирования. Он просто ходил по 20 часов в день […] его просто не было в эти периоды времени. Пару раз, когда он запускал что-то в первый раз, например, посреди ночи. И все вы, кто писал программное обеспечение, видели, что, например, когда оно впервые появляется на экране, вы должны кому-то сказать. Моя жена Лори скажет вам, что у меня было несколько таких звонков посреди ночи, например, LOGO , XLT 86.был другой, где он запустил его в первый раз, и ему нужно было, чтобы кто-нибудь это увидел. Так что не имело значения, сколько сейчас времени, он звонил мне, я должен был прийти и посмотреть, как это работает. […] [2] [3] (33 страницы)
  9. ^ Барри, Тим (1982-04-05). «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. ^ Килдалл, Гэри Арлен (1982-04-19). Суэйн, Майкл ; Фрейбергер, Пауль ; Марков, Джон Грегори (ред.). «Основатель Digital Research обсуждает свой взгляд на бизнес» . InfoWorld - еженедельник для пользователей микрокомпьютеров . Спец. Раздел: CP / M. 4 (15). Popular Computing, Inc. стр. 23–24. ISSN 0199-6649 . Проверено 17 января 2020 . […] Килдалл: […] Полтора года назад я, вероятно, тратил 75% своего времени на бизнес и 25% на программирование. XLT-86 был продуктом, над которым я работал в то время, и мне потребовалось девять месяцев, чтобы сделать это. Это был бы трехмесячный проект, если бы я мог сосредоточиться на нем. […]
  11. ^ Kildall, Гэри Арлен (июнь-июль 1982). Баннелл, Дэвид Хью ; Эдлин, Джим (ред.). «Гэри Килдалл - Человек, создавший CP / M: Создатель CP / M - Глубокое эксклюзивное интервью для ПК с пионером программного обеспечения Гэри Килдаллом» . Журнал ПК . Операционные системы. Vol. 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; они просто не очень хорошо отображаются из-за регистров флагов и тому подобного. То, как мы дорабатываем программное обеспечение, называетсяXLT-86 . Его не было полгода или около того. ПК: Под «лучшим» кодом вы подразумеваете меньший размер? Килдалл: На двадцать процентов меньше, чем если бы вы просто взяли каждый операционный код и выполнили прямой перевод с сохранением регистров для сохранения семантики. ПК: Каков размер переведенной программы по сравнению с версией 8080? Килдалл: Если вы возьмете программу 8080, переместите ее на территорию 86 и выполните перевод XLT-86, вы обнаружите, что она примерно на 10-20 процентов больше. На 16-битных машинах все труднее решать; вы получаете коды операций, которые в среднем немного больше. Интересным явлением является то, что одна из причин, по которой вы не получаете огромного увеличения скорости в 16-битном мире, заключается в том, что вы запускаете больше кодов операций по шине данных. […]