Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перевод PC ассемблера в ARM ассемблер.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Oleg_IT
Есть много полезного кода написанного на ассемблере PC под Watcom. Есть чистый ассемблер, есть ассемблерные вставки, например:
Код
int INDEX_BACKWARD(int,int);
#pragma aux INDEX_BACKWARD parm [eax] [ebx] = \
    "sub  eax,2"                              \
    "add  eax,ebx"                            \
    "cdq"                                     \
    "idiv ebx"                                \
modify [edx]                                  \
value [edx]                                  ;


Переводить всё это в ручную на ассемблер ARM можно, но долго и муторно. Может сочинили программку, которая это автоматически делает.
scifi
Если честно, я бы не надеялся на то, что такая программа есть.
К тому же в приведённом примере страшен не столько ассемблер, сколько магическая прагма компилятора Watcom. Сомневаюсь, что у этой прагмы есть аналоги в компиляторах для ARM.
Короче, это непереносимый код.
Oleg_IT
Кода с прагмой мало, в основном чистый ассемблер.
Dron_Gus
Разберитесь, что делают функции и напишите на C. Не устроит производительность - тогда перепишите на ASM.
Oleg_IT
Что делает функция понятно и именно для повышения производительности написанно на ассемблере. Даже оптимизатор Watcom-a, который был лучшим тогда не смог так постоить код как ручками сделали. А ассемблер ARM ещё осваивать нужно, а времени, как всегда...
Dron_Gus
А Вы на Си пробовали? Не устраивает производительность?
Oleg_IT
Да, пробовали. С начало часть кода была написана на С и на асемблере, протестированна. И по результатам было решено критические части писать на асемблере, их оказалось много. И всё это было сделано на PC, который тогда уже был производительнее ARM-а.
Dron_Gus
В таком случае переписывать с одного ассеблера на другой не имеет смысла, т.к. архитектуры через чур разные, ИМХО. На этом форуме было много подобных тем, люди говорят, что чтобы написать лучше компилятора нужно долго думать и иметь богатый опыт.
esaulenka
Цитата(Oleg_IT @ Feb 1 2011, 09:36) *
Может ... программку, которая ... автоматически ...

Есть такие программки. "Компилятор языка Си" называются.

Работают они хорошо. Во всяком случае, я на ассемблере пишу гораздо хуже ;-)

А программок, которые с одного ассемблера переводила в другой, и при этом учитывала фишки нового процессора и как-то обходила отсутствующие фишки старого, нету, и, скорее всего, не будет.
SII
Автоматический перевод с ассемблера одной архитектуры (ИА-32 в данном случае) на ассемблер другой (АРМ) технически возможен и даже не шибко сложен. Однако качество полученного кода будет отвратительным, ведь ручное программирование на ассемблере даёт выигрыш как раз за счёт того, что человек учитывает всякие мелкие детали и особенности конкретной архитектуры, ну а программа-переводилка это сделать не в состоянии в принципе: она ж не знает, что данный код делает, она может лишь тупо переводить одни команды в другие, в лучшем случае -- учитывать некоторые побочные моменты (учёт коих, кстати, резко повысит сложность переводилки).

В общем, если производительность критически важна, придётся писать вручную, без этого никак.
sergeeff
Несколько раз уже писал, ссылаясь на опыт серъезных программистов, что нельзя заранее оптимизировать свои программы. Надо сначала сделать ее работоспособной, а потом уже, выяснив узкие места, рассмотретъ ВСЕ ВОЗМОЖНОСТИ по ее доводки до ума.

Для начала написать программу под ARM на чистом С.
Oleg_IT
Цитата(sergeeff @ Feb 8 2011, 21:52) *
Несколько раз уже писал, ссылаясь на опыт серъезных программистов, что нельзя заранее оптимизировать свои программы. Надо сначала сделать ее работоспособной, а потом уже, выяснив узкие места, рассмотретъ ВСЕ ВОЗМОЖНОСТИ по ее доводки до ума.

Для начала написать программу под ARM на чистом С.

А я не говорю что "заранее оптимизировать свои программы". Этому коду, который написам на ASMе и, чистично, на С уже лет 15. Он уже на столько отработан, что в нём очень мало ошибокsm.gif
Наверное всё же придется делать всё на С, может на первое время.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.