реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Перевод PC ассемблера в ARM ассемблер.
Oleg_IT
сообщение Feb 1 2011, 06:36
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Есть много полезного кода написанного на ассемблере 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 можно, но долго и муторно. Может сочинили программку, которая это автоматически делает.
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 1 2011, 07:10
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Если честно, я бы не надеялся на то, что такая программа есть.
К тому же в приведённом примере страшен не столько ассемблер, сколько магическая прагма компилятора Watcom. Сомневаюсь, что у этой прагмы есть аналоги в компиляторах для ARM.
Короче, это непереносимый код.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Feb 1 2011, 07:24
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Кода с прагмой мало, в основном чистый ассемблер.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Feb 1 2011, 07:48
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Разберитесь, что делают функции и напишите на C. Не устроит производительность - тогда перепишите на ASM.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Feb 1 2011, 09:04
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Что делает функция понятно и именно для повышения производительности написанно на ассемблере. Даже оптимизатор Watcom-a, который был лучшим тогда не смог так постоить код как ручками сделали. А ассемблер ARM ещё осваивать нужно, а времени, как всегда...
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Feb 1 2011, 09:07
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



А Вы на Си пробовали? Не устраивает производительность?


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Feb 1 2011, 09:36
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Да, пробовали. С начало часть кода была написана на С и на асемблере, протестированна. И по результатам было решено критические части писать на асемблере, их оказалось много. И всё это было сделано на PC, который тогда уже был производительнее ARM-а.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Feb 1 2011, 10:10
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



В таком случае переписывать с одного ассеблера на другой не имеет смысла, т.к. архитектуры через чур разные, ИМХО. На этом форуме было много подобных тем, люди говорят, что чтобы написать лучше компилятора нужно долго думать и иметь богатый опыт.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Feb 1 2011, 13:54
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(Oleg_IT @ Feb 1 2011, 09:36) *
Может ... программку, которая ... автоматически ...

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

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

А программок, которые с одного ассемблера переводила в другой, и при этом учитывала фишки нового процессора и как-то обходила отсутствующие фишки старого, нету, и, скорее всего, не будет.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
SII
сообщение Feb 8 2011, 17:03
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



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

В общем, если производительность критически важна, придётся писать вручную, без этого никак.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 8 2011, 18:52
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



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

Для начала написать программу под ARM на чистом С.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Feb 9 2011, 10:27
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



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

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

А я не говорю что "заранее оптимизировать свои программы". Этому коду, который написам на ASMе и, чистично, на С уже лет 15. Он уже на столько отработан, что в нём очень мало ошибокsm.gif
Наверное всё же придется делать всё на С, может на первое время.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01495 секунд с 7
ELECTRONIX ©2004-2016