Ретаргетинг
В разработке программного обеспечения ретаргетинг является атрибутом инструментов разработки программного обеспечения, которые были специально разработаны для генерации кода для более чем одной вычислительной платформы.
Составители
[ редактировать ]— Переназначаемый компилятор это компилятор , который был разработан так, чтобы его можно было относительно легко модифицировать для генерации кода для различных ЦП архитектур набора команд . История этой идеи восходит к 1950-м годам, когда UNCOL был предложен в качестве универсального промежуточного языка. Pascal P-компилятор является примером одного из первых широко используемых ретаргетинговых компиляторов.
Стоимость создания переназначаемого компилятора, который генерирует код того же качества, что и непереназначаемый компилятор (т. е. компилятор, предназначенный для создания кода только для одного процессора), выше, поскольку невозможно использовать специфичные для процессора детали во всех случаях. этапы компиляции. Преимущества переназначаемого компилятора заключаются в том, что общая стоимость работы с несколькими процессорами намного ниже, чем совокупная стоимость многих отдельных непереназначаемых компиляторов.
Некоторые переназначаемые компиляторы, например GCC , стали настолько широко портированы и развиты, что теперь включают поддержку многих оптимизаций и специфических для машины деталей, так что качество кода часто превосходит качество кода непереназначаемых компиляторов на многих процессорах.
глобальный оптимизатор общего назначения, за которым следует оптимизация «глазка» для конкретной машины. Широко используемым методом реализации является [1] Оптимизация кода для некоторых высокопроизводительных процессоров требует детальных и конкретных знаний об архитектуре и о том, как выполняются инструкции. Если разработчики не потратят много времени, необходимого на написание генератора кода специально для конкретной архитектуры, оптимизации, выполняемые переназначаемым компилятором, будут только теми, которые применимы к общим характеристикам процессора.
Переназначаемый компилятор — это разновидность кросс-компилятора . Часто (но не всегда) переназначаемый компилятор является портативным (сам компилятор может работать на нескольких разных процессорах) и размещается самостоятельно .
Примеры переназначаемых компиляторов:
- GCC
- ПОДТВЕРЖДЕНИЕ
- ООО
- VBCC
- Портативный компилятор C
- СДКК
- ЛЛВМ
- Компилятор Small- C
- MPG, «машинонезависимый эффективный генератор микропрограмм» [2]
Декомпилятор
[ редактировать ]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 )
Ссылки
[ редактировать ]- ^ Дэвидсон и Фрейзер; Проектирование и применение перенацеливаемого оптимизатора глазка; ToPLaS v2 (2) 191-202 (апрель 1980 г.)
- ^ Райнер Лойперс, Петер Марведель. «Технология переназначаемого компилятора для встраиваемых систем» . 2001. ( ISBN 0-7923-7578-5 ) стр. 63.