Ретаргетинг

Атрибут многоплатформенных инструментов разработки программного обеспечения

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

Компиляторы

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

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

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

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

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

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

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

retdec («Retargetable 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 )

Ссылки

  1. ^ Дэвидсон и Фрейзер; Разработка и применение перенацеливаемого оптимизатора глазка; ToPLaS v2(2) 191-202 (апрель 1980 г.)
  2. ^ Райнер Лейперс, Питер Марведель. «Технология перенацеливаемых компиляторов для встраиваемых систем». 2001. ( ISBN 0-7923-7578-5 ) стр. 63. 
  • Сайт компилятора LANCE
  • Веб-сайт инфраструктуры компилятора LLVM
  • Страница ACK sourceforge (с открытым исходным кодом)
  • Страница компилятора C Нильса Веллера
  • Веб-сайт РетДек
Взято с "https://en.wikipedia.org/w/index.php?title=Ретаргетинг&oldid=1265375305"