Ретаргетинг - Retargeting

В программной инженерии , перепланирование является атрибутом инструментальных средств разработки программного обеспечения , которые были специально разработаны для генерации коды для более чем одной вычислительной платформы.

Компиляторы

Настраиваемого компилятор является компилятором , который был разработан , чтобы быть относительно легко модифицировать для генерации коды для различных CPU набора команд архитектуры . История этой идеи восходит к 1950-м годам, когда UNCOL был предложен в качестве универсального промежуточного языка. P-компилятор Pascal является примером раннего широко используемого переносимого компилятора.

Стоимость создания перенаправляемого компилятора, который генерирует код такого же качества, как и не перенастраиваемый компилятор (т. Е. Тот, который предназначен для создания кода только для одного процессора), выше, потому что невозможно использовать детали, специфичные для процессора, во всем фазы компиляции. Преимущества ретаргетируемого компилятора заключаются в том, что общая стоимость нескольких процессоров намного ниже, чем совокупная стоимость многих отдельных компиляторов, не поддерживающих таргетинг.

Некоторые ретаргетируемые компиляторы, например, GCC , стали настолько широко портироваться и развиваться, что теперь они включают поддержку многих оптимизаций и специфичных для машины деталей, так что качество кода часто превосходит качество кода неперенаправляемых компиляторов на многих процессорах.

Обычно используется глобальный оптимизатор общего назначения, за которым следует оптимизация с помощью глазка для конкретной машины . Оптимизация кода для некоторых высокопроизводительных процессоров требует подробных и конкретных знаний архитектуры и того, как выполняются инструкции. Если разработчики не вкладывают много времени, необходимого для написания генератора кода специально для архитектуры, оптимизации, выполняемые перенацеливаемым компилятором, будут применимы только к общим характеристикам процессора.

Перенастраиваемый компилятор - это своего рода кросс-компилятор . Часто (но не всегда) перенастраиваемый компилятор является переносимым (сам компилятор может работать на нескольких разных процессорах) и самообслуживанием .

Примеры ретаргетируемых компиляторов:

Декомпилятор

retdec ( «настраиваемый Decompiler») является открытым исходным кодом настраиваемого машинно-код декомпилятора на основе LLVM .

  • Декомпилятор не ограничен какой-либо конкретной целевой архитектурой, операционной системой или форматом исполняемого файла:
  • Поддерживаемые форматы файлов: ELF, PE, Mach-O, COFF, AR (архив), Intel HEX и необработанный машинный код.
  • Поддерживаемые архитектуры (в настоящее время только 32-битные): Intel x86, ARM, MIPS, PIC32 и PowerPC.

Ассемблеры

И наоборот, перенацеливающие ассемблеры способны генерировать объектные файлы разных форматов, что полезно при переносе программ на языке ассемблера в различные операционные системы , работающие на одной архитектуре ЦП (например, Windows и Linux на платформе x86 ). NASM - один из таких ассемблеров.

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

  • Компилятор C с возможностью перенастройки : проектирование и реализация ( ISBN   0-8053-1670-1 )

Рекомендации

Внешние ссылки