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

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

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


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


Ответы (1)


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

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

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

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

person unixsmurf    schedule 23.10.2012
comment
Да, есть много макросов, и кто знает, какие еще дополнительные функции я найду, когда начну копаться в этом больше. Я занимаюсь проверкой ASIC, и это набор стандартных тестов от ARM, чтобы убедиться, что наша интеграция с ARM была выполнена правильно, прежде чем мы отключим ASIC. Так что есть также проблема сделать это точно правильно, иначе это может быть очень дорого. Я надеялся, что это общая проблема, которая уже решена. Если нет способа выполнить преобразование так, как мы можем быть уверены, мой следующий шаг — поговорить с руководством о получении лицензии на инструментальную цепочку ARM. - person SDGator; 23.10.2012
comment
Вы делаете ASIC, а лицензия на компилятор слишком дорогая? Звучит как странная ситуация. - person Carl Norum; 23.10.2012
comment
Да, расскажи мне об этом. Отчасти это связано с тем, что команда SW уже использует инструменты gnu (и они довольны этим), так что это то, что мы используем, и отчасти это необходимо, чтобы оправдать это перед счетчиками компонентов. Если нет изящного способа выполнить преобразование для этих тестов выхода, я бы назвал это довольно хорошим обоснованием хотя бы одной лицензии. - person SDGator; 23.10.2012
comment
Тогда я бы предположил, что стоимость лицензии будет ниже, чем инженерные затраты на преобразование. Особенно учитывая, что валидация ASIC зависает в балансе, если что-то пойдет не так. - person unixsmurf; 23.10.2012