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

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

Компиляторы

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

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

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

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

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

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

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

Retdec: является Открытый исходный код перенаправляемый декомпилятор машинного кода на основе 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)

внешняя ссылка