Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Преобразование сборки ARM в сборку gnu

Автор вопроса: SDGatorОтветов: 1

У меня есть набор файлов .s от ARM, которые работают в цепочке инструментов ARM, но мы используем цепочку инструментов gnu.

Есть ли скрипт/инструмент/метод преобразования, который преобразует сборку из одного формата в другой? Делать это вручную кажется... опасным.

  • Если ваши наборы инструментов поддерживают общий формат объектов, вы можете собирать файлы с помощью одного и дизассемблировать с помощью другого. Это даст вам большую часть пути туда. Carl Norum 23.10.2012
  • К сожалению, у нас нет собственного инструментария для рук. Слишком дорого, поэтому все используют gnu. Если бы у нас это было, то вы правы, нужно было бы выполнить преобразование и дизассемблировать оба и сравнить. SDGator 23.10.2012
  • Когда-то я работал в компании, которая имела полный доступ к набору инструментов ARM, но нуждалась в доставке бинарных библиотек клиентам, использующим GNU/GCC. Наше решение заключалось в дизассемблировании созданных вручную библиотек и передаче результата через очень большое количество Perl для преобразования в сборку, совместимую с GAS, а также в передаче результата в цепочку инструментов GNU для создания окончательной библиотеки. Проект, в котором было выполнено преобразование, был разделен между командами, и мне пришлось приложить значительные усилия, чтобы создать его из моих смутных. ahcox 10.02.2015

armassemblygnu

Ответы

Ответ 1 · рейтинг 1 · unixsmurf

Я не уверен, что скрипт/инструмент будет менее опасным, чем делать это вручную.

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

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

Отличия большей части кода заключаются в метках (что требует ':' после имени метки, а в armasm нет), но, что более важно, в директивах ассемблера.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы